CodeLan
Administrator
Dołączył: 03 Lis 2006
Posty: 171
Przeczytał: 0 tematów
Pomógł: 3 razy Ostrzeżeń: 0/5 Skąd: Z pod skrzydeł Google.pl
|
Wysłany: Nie 7:30, 17 Cze 2007 Temat postu: Instrukacja INT |
|
|
Jak już o tym pisałem omawiając istotę przerwań, INT jest instrukcją uruchamiającą przerwanie programowe.
Składnia instrukcji:
INT numer_przerwania
Numer_przerwania to liczba z zakresu 0-255, musi być podana konkretna wartość; nie można używać rejestrów np.
INT AH - spowoduje komunikat o błędzie.
Mając dostęp do listy funkcji choćby nawet podstawowych przerwań - int 21H, int 16h, int 10H - otrzymujesz sporą gamę gotowych procedur, które będziesz mógł wykorzystać w swoich programach bez potrzeby ich (procedur) dołączania do kodu programu.
Polega to na tym, że odpowiednie ustawienie rejestrów (głównie ax, bx...) i wywołanie danego przerwania powoduje wykonanie określonej procedury lub funkcji - jeśli jest to funkcja, to po powrocie z danego przerwania odpowiednie rejestry będą miały odpowiednie wartości - np:
Przerwanie 21H funkcja 2CH - pobierz czas
AH = 2CH
Przerwanie zwraca:
CH = godzina (0-23)
CL = minuta (0-59)
DH = sekunda (0-59)
DL = setne sekundy (0-99)
Co oznacza ten zapis?
Znaczy to tyle, że aby otrzymać czas korzystając z usługi przerwania 21H, należy:
1. Ustawić rejestr AH na wartość 2CH (MOV AH,2CH) 2. Wywołać przerwanie 21H (INT 21H). I już - rejestry CH, CL, DH i DL zawierać będą aktualny czas.
Innym przykładem - dość często używanym - jest funkcja 4CH przerwania 21H.
Przerwanie 21H funkcja 4CH - zakończ program i zwróć kod errorlevel
AH=4CH
AL = kod wyjścia (errorlevel dla plików .bat)
Nie zwraca nic.
Tutaj postępujemy analogicznie jak w poprzednim przypadku - ustawiamy rejestry AH i AL a następnie wywołujemy przerwanie.
Prosta demonstracja funkcji int 21H/4CH
Znając choćby te dwie funkcje - można się pokusić o napisanie prostego programu, który można będzie używać w plikach sadowych (.bat) - program, który po uruchomieniu w errorlevel zwróci aktualną godzinę.
Na pewno już sam potrafisz napisać taki program, jeśli jednak nie, to tutaj masz przygotowany ten programik (w wersji .asm i skompilowanej) oraz prosty plik wsadowy, który pozwoli przetestować działanie programu.
Ostatnią sprawą, o której warto wiedzieć jest oczywista możliwość uruchomienia dowolnego przerwania - bez parametrów.
Jak wiesz, przerwanie 05H jest przerwaniem drukowania ekranu - uruchamianym po naciśnięciu .
Post został pochwalony 0 razy
|
|