"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.

 

Powrót do spisu treści kursu


Copyright by Grzegorz Złotowicz
Form and Graphics: Michał Stanek

Pytanie komentarz do Autora