"INT
- wywołanie przerwania"
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
Co by się jednak stało, gdyby uruchomić to przerwanie przy
użyciu instrukcji INT?
Sprubój - jak zwykle dostarczam gotowca
dla leniwych:).
Uwaga!!!
Jeśli zamierzasz napisać
jakikolwiek program sam, to pamiętaj - po pierwsze o strukturze
programu, po
drugie - nigdy nie zapomnij użyć funkcji wyjścia
z programu.
Copyright by Grzegorz Złotowicz
Form and Graphics: Michał Stanek