21.10.2012 11:50
PRZERWANIE 21H
Strona 1 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
To jest wersja html pliku
http://kaszpir.hlds.pl/mail.grafikus.com.pl/mila/Semestr2/Architektura/Asembler/Przerwanie%2021H.rtf
G
o
o
g
l
e
automatycznie generuje wersję html dokumentu podczas indeksowania Sieci.
PRZERWANIE
21H
T
abela zawiera spis większości funkcji przerwania 21h.
Funkcja
Opis
00H
Nazwa: Zakończenie programu
Opis:
Funkcja kończy wykonywanie procesu. Zwalnia jednocześnie przydzieloną
wcześniej procesowi pamięć, zamyka wszystkie otwarte pliki i oddaje
sterowanie procesowi macierzystemu. Istnieje nowsza o podobnym znaczeniu
funkcja, mianowicie 4CH.
Do rejestru CS podajemy adres przedrostka procesu (PSP). Funkcja nie zwraca
żadnej wartości.
01H
Nazwa: Czytanie znaku z echem
Opis:
Funkcja oczekuje na znak w standardowym strumieniu wejściowym. Kiedy
znak się pokaże, funkcja kopiuje go do standardowego strumienia wyjściowego.
Po odebraniu znaku funkcja w rejestrze AL zwraca kod tego znaku. Jeśli
wciśniętym klawiszem był klawisz CTRL+C, to funkcja wywoła przerwanie
23H
02H
Nazwa: Wypisywanie znaku
Opis:
Przesyła znak, którego kod znajduje się w rejestrze DL do standardowego
strumienia wyjściowego. Jeśli podczas wykonywania tej funkcji zostanie
wciśnięty klawisz CTRL+C, to zostanie wywołanie przerwanie 23H.
03H
Nazwa: Czytanie znaku z urządzenia dodatkowego
Opis:
Funkcja czeka na znak ze strumienia dodatkowego i zwraca go w rejestrze AL.
Kiedy naciśniętym klawiszem był klawisz CTRL+C wywołane zostanie
przerwanie 23H
04H
Nazwa: Wypisywanie znaku do urządzenia dodatkowego
21.10.2012 11:50
PRZERWANIE 21H
Strona 2 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
04H
Nazwa: Wypisywanie znaku do urządzenia dodatkowego
Opis:
Funkcja wysyła znak zawarty w DL do standardowego strumienia
dodatkowego. Klawisz CTRL+C wywołuje przerwanie 23H
05H
Nazwa: Drukowanie znaku
Opis:
Przesyła znak z rejestru DL do standardowego strumienia drukarki.
06H
Nazwa: Bezpośrednie korzystanie z konsoli
Opis:
Jeśli przed wywołaniem funkcji w rejestrze DL była wartość 0FFH, to nie
ustawiony znacznik Z oznacza, że w rejestrze AL znajduje się znak ze
standardowego strumienia wejściowego. Ustawiony znacznik Z oznacza, że w
standardowym strumieniu wejściowym nie było żadnego znaku. W takim
przypadku w AL wstawiana jest wartość 0. Jeśli przekazana wartość w DL była
inna niż 0FFH, to znak z DL jest przesyłany do standardowego strumienia
wyjściowego. Funkcja ta nie reaguje na naciśnięcie klawisz CTRL+C.
07H
Nazwa: Bezpośrednie czytanie z konsoli
Opis:
Funkcja oczekuje na znak do odczytu ze standardowego strumienia
wejściowego, następnie zwraca go w rejestrze AL. Funkcja nie reaguje na
klawisz CTRL+C.
08H
Nazwa: Czytanie znaku
Opis:
Funkcja czeka na znak ze standardowego strumienia wejściowego, następnie
zwraca jego kod w rejestrze AL. Funkcja przy wciśnięciu klawisza CTRL+C
wywołuje przerwanie 23H
09H
Nazwa: Wypisywanie tekstu
Opis:
Funkcja wysyła do standardowego strumienia wyjściowego łańcuch znaków
przekazanych w DS:DX. Łańcuch ten musi być zakończony znakiem '$' (dolar).
Znak ten sam nie jest wyświetlany. Wyświetlanie można przerwać klawiszem
CTRL+C
0AH Nazwa: Czytanie wiersza z klawiatury
Opis:
Funkcja pobiera łańcuch znaków ze standardowego strumienia wejściowego.
Kopiuje je do bufora zdefiniowanego przez DS:DX. Bufor ten powinien być
21.10.2012 11:50
PRZERWANIE 21H
Strona 3 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
Kopiuje je do bufora zdefiniowanego przez DS:DX. Bufor ten powinien być
poprzedzony bajtem, określającym maksymalną liczbę znaków łącznie z CR,
który musi być wprowadzony na końcu. Drugi bajt zawiera liczbę
przeczytanych znaków bez CR. Wartość tą ustawia funkcja na końcu. Dalej są
wprowadzone dane. Ciąg znaków musi być zakończony klawiszem CR (0DH).
Funkcja może zostać przerwana po naciśnięciu klawisza CTRL+C.
0BH Nazwa: Sprawdzanie stanu klawiatury
Opis:
Funkcja sprawdza, czy w standardowym strumieniu wejściowym są jakieś
znaki. Jeśli nie został zmieniony strumień, to sprawdza bufor klawiatury. Jeśli
w buforze funkcja nie znajdzie żadnych klawiszy, to zwraca w rejestrze AL
wartość zero, w przeciwnym wypadku zwraca wartość 0FFH.
0CH Nazwa: Opóźnienie bufora czytanie z klawiatury
Opis:
Funkcja ta czyści bufor standardowego strumienia wejściowego. Po
wyczyszczeniu bufora, funkcja wywołuje przerwanie 21H i funkcję podaną w
rejestrze AL.
0DH Nazwa: Stabilizowanie stanu dysku
Opis:
Funkcja czyści wszystkie bufory plików w pamięci, co powoduje, że zawartość
tych plików jest poprawna. Czyszczenie buforów nie zamyka plików.
0EH Nazwa: Ustalenie dysku bieżącego
Opis:
Ustala dysk bieżący o numerze podanym w rejestrze DL. W rejestrze AL
zwraca liczbę wszystkich dysków logicznych w systemie.
0FH Nazwa: Otwieranie pliku
Opis:
Otwiera plik. W rejestrze DS:DX musi znajdować się adres bloku FCB tego pliku.
Otwierany plik nie może być już wcześniej otwarty. Jeśli plik nie istnieje lub ma
ustawione odpowiednie atrybuty funkcja zwraca wartość w rejestrze AL=0FFH i
kończy działanie programu. Jeśli wszystko powiodło się sukcesem uzupełniane są
odpowiednie pola FCB:
Jeśli numer stacji dysków [00H] miał wartość 0(dysk bieżący) to wartość ta jest
zmieniana na numer dysku bieżącego (1-A, 2-B itd.)
Numer bloku bieżącego (0CH) jest zerowany
21.10.2012 11:50
PRZERWANIE 21H
Strona 4 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
Numer bloku bieżącego (0CH) jest zerowany
Rozmiar pliku (10H), data (14H) i czas (16H) są ustawiane zgodnie z danymi
katalogu.
10H
Nazwa: Zamykanie pliku
Opis:
Funkcja zamyka plik opisany blokiem FCB przekazanym w DS:DX. Jeśli wystąpi
jakiś błąd funkcja zwraca w rejestrze AL wartość 0FFH.
11H
Nazwa: Znajdowanie pierwszej pozycji w katalogu
Opis:
Funkcja przeszukuje bieżący katalog w poszukiwaniu pozycji odpowiadającej
wzorcowi. Szukany wzorzec FCB przekazany jest w DS:DX. Można w nim używać
takich znaków jak: * czy ?. Jeśli plik nie zostanie znaleziony funkcja zwraca w
rejestrze AL wartość 0FFH, w przeciwnym wypadku zwraca w buforze roboczym
(DTA) nowy blok FCB znalezionego pliku.
12H
Nazwa: Znajdowanie kolejnej pozycji w katalogu
Opis:
Funkcji tej używa się po wcześniej wykonanej funkcji11H. Powoduje ona
znalezienie kolejnej pozycji odpowiadającej wzorcowi. Jeśli nie zostanie znaleziony
żaden plik, funkcja zwraca w rejestrze AL wartość0FFH. Jeśli jednak zostanie
znaleziony plik
AL=0, a w buforze roboczym zostanie utworzony blok FCB
.
13H
Nazwa: Usuwanie pliku
Opis:
Funkcja ta powoduje usunięcie pliku odpowiadającemu wzorcowi przekazanemu w
bloku FCB. Adres tego bloku podajemy w DS:DX. Plik nie może być otwarty. We
wzorcu można używać znaków: "*" i "?".Jeśli nie zostanie znaleziony plik do
skasowania w AL znajdzie się wartość 0FFH, w przeciwnym wypadku AL=0.
14H
Nazwa: Sekwencyjne czytanie pliku
Opis:
Funkcja czyta kolejne rekordy pliku otwartego i związanego z blokiem FCB
wskazanym przez DS:DX. Umieszcza rekord w buforze roboczym (DTA) i
zwiększa przesunięcie rekordu [20H] i ewentualnie numer bloku [0CH] FCB.
Funkcja zwraca w rejestrze AL następujące wartości:
00H - Czytanie zakończone sukcesem
01H - Napotkano koniec pliku
02H - Zbyt mało miejsca w buforze roboczym
03H - Napotkano koniec pliku. Przeczytano część rekordu, resztę wypełniono
zerami.
15H
Nazwa: Sekwencyjne pisanie w pliku
Opis:
21.10.2012 11:50
PRZERWANIE 21H
Strona 5 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
Opis:
Funkcja zapisuje rekord znajdujący się w buforze roboczym (DTA) do pliku
opisanego przez blok FCB wskazany przez DS:DX. Zostaje zapisany rekord o
długości równej rozmiarowi rekordu (0EH) pod pozycją wskazywaną przez numer
bloku (0CH) i przesunięcie rekordu (20H), a następnie zwiększa wartość tych pół. W
rejestrze AL zostaje podany kod wykonania operacji (patrz 14H)
16H
Nazwa: Tworzenie pliku
Opis:
Funkcja powoduje utworzenie nowego pliku pod nazwą podaną w bloku FCB
wskazanym przez DS:DX. Stworzony plik zostaje od razu otwarty. Jeśli plik już
istnieje, to zostaje otwarty i długość pliku (10H) zostaje ustawiona na 0. Jeśli
podczas tworzenia pliku wystąpi błąd, to zostanie on zwrócony w rejestrze AL.
17H
Nazwa: Zmiana nazwy pliku
Opis:
Funkcja powoduje zmianę nazwy pliku związanego z blokiem FCB wskazanym
przez DS:DX. Blok ten powinien zostać zmodyfikowany tak, że bezpośrednio po
nazwie pierwszego pliku (11H) należy podać nazwę drugiego pliku. Jeśli wystąpi
błąd, to zostanie on zwrócony w rejestrze AL. W przeciwnym wypadku AL=0.
19H
Nazwa: Pytanie o dysk bieżący
Opis:
Funkcja zwraca w rejestrze AL numer bieżącego dysku.
1AH
Nazwa: Ustalenie bufora roboczego
Opis:
Funkcja powoduje ustalenie adresu bufora roboczego (DTA).Adres podajemy w
DS:DX.
1BH
Nazwa: Pytanie o charakterystykę dysku bieżącego
Opis:
Funkcja zwraca informacje na temat bieżącego dysku. W rejestrze AL zapisana
zostanie liczba sektorów w bloku przydziału (cluster). Do CX zostanie przesłana
liczba bajtów w jednym sektorze. W rejestrze DX zapisana zostanie liczba bloków
przydziału na dysku, a DS:DX -adres bajta identyfikującego postać dysku.
1CH
Nazwa: Pytanie o charakterystykę urządzenia blokowego
Opis:
Funkcja ta zwraca informacje na temat urządzenia blokowego, którego numer
podano w rejestrze DL. W rejestrze AL zostanie zapisana liczba sektorów w bloku
przydziału. W CX liczba bajtów w sektorze, DX liczba bloków przydziału na dysku.
W DS:BX adres bajta identyfikującego postać dysku.
1FH
Nazwa: Pytanie o adres bloku informacji o urządzeniach dla bieżącego dysku
Opis:
Jest to funkcja nieudokumentowana. Zwraca w DS:BX adres bloku informacji o
urządzeniu dla bieżącego dysku. Blok ten ma następujący format:
21.10.2012 11:50
PRZERWANIE 21H
Strona 6 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
urządzeniu dla bieżącego dysku. Blok ten ma następujący format:
offset rozmiar Opis
0
1
numer dysku (0-A)
1
1
Numer urządzenia w programie
2
2
Rozmiar sektora w bajtach
4
1
Liczba sektorów na blok przydziału (cluster)
5
1
n (blokprzydziału=2*liczba sektorów)
6
2
Liczba zarezerwowanych sektorów na dysku
8
1
Liczba tablic FAT na dysku
9
2
Ilość pozycji w katalogu głównym
0BH 2
Numer pierwszego sektora z danymi
0DH 2
Liczba bloków przydziału na dysku
0FH 1
Rozmiar FAT w sektorach
10H
2
sektor, w którym znajduje się katalog główny
12H
4
Adres nagłówka urządzenia
16H
1
Bajt identyfikujący postać dysku (FAT)
17H
1
Znacznik dostępu
18H
4 Adres następnego bloku informacji (FFFFH gdy ostatni)
21H
Nazwa: Swobodne czytanie pliku
Opis:
Funkcja powoduje przeczytanie rekordu wskazanego przez numer rekordu
bieżącego (21H) z otwartego pliku związanego z blokiem FCB wskazanym przez
DS:DX. Zostanie on umieszczony w buforze roboczym DTA. Zostaną również
zwiększone: przesunięcie rekordu (20H) i numer bloku(0CH). Rejestr AL
zwraca kod ewentualnego błędu
22H
Nazwa: Swobodne pisanie w pliku
Opis:
Funkcja powoduje zapisanie rekordu, który znajduje się w buforze roboczym
(DTA), do pliku opisanego blokiem FCB, którego adres wskazany jest przez
DS:DX.
23H
Nazwa: Pytanie o rozmiar pliku
Opis:
Funkcja określa liczbę rekordów w pliku, odpowiadającemu blokowi FCB
wskazanemu przez DS:DX.
24H
Nazwa: Wybieranie rekordu
21.10.2012 11:50
PRZERWANIE 21H
Strona 7 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
24H
Nazwa: Wybieranie rekordu
Opis:
Funkcja ustawia rekord bieżący (21H) na podstawie zawartości pól: numer
bloku (0CH) i przesunięcie bloku(20H) tablicy FCB. DS:DX musi wskazywać na
blok związany z tym plikiem.
25H
Nazwa: Ustalenie adresu kodu obsługi przerwania
Opis:
Funkcja ustawia nowy adres procedury obsługi przerwania. Numer przerwania
podajemy w rejestrze AL, natomiast adres w DS:DX.
26H
Nazwa: Tworzenie nowego PSP
Opis:
Funkcja powoduje utworzenie nowego przedrostka procesu w segmencie
wskazanym przez DX.
27H
Nazwa: Swobodne czytanie ciągu rekordów
Opis:
Funkcja powoduje przeczytanie jednego lub kilku (CX)rekordów, z których
pierwszy wskazany jest przez: numer rekordu bieżącego (21H), z otwartego
pliku związanego z blokiem wskazanym przez DS:DX. umieszczenie tych
rekordów w buforze roboczym (DTA). Po przeczytaniu rekordów w rejestrze
CX zostanie zapisana liczba przeczytanych rekordów.
28H
Nazwa: Swobodne pisanie ciągu rekordów
Opis: Funkcja zapisuje jeden lub więcej (CX) rekordów do pliku związanego z
blokiem FCB wskazanym przez DS:DX. Rekord(y) ten znajduje się w buforze
roboczym (DTA). Po wykonaniu zadania rejestr CX zawiera liczbę zapisanych
rekordów.
29H
Nazwa: Rozkład nazwy pliku
2AH Nazwa: Pytanie o datę
2BH Nazwa: Ustalenie daty
2CH Nazwa: Pytanie o czas
2DH Nazwa: Ustalenie czasu
2EH Nazwa: Ustalenie sygnalizatora weryfikacji
21.10.2012 11:50
PRZERWANIE 21H
Strona 8 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
2EH Nazwa: Ustalenie sygnalizatora weryfikacji
2FH Nazwa: Pytanie o bufor roboczy
30H
Nazwa :Pytanie o numer wersji systemu
31H
Nazwa: Usypianie procesu
32H
Nazwa: Pytanie o adres bloku informacji o urządzeniu
33H
Nazwa: Pytanie o wrażliwość na znak CTRL + C lub je ustalenie
34H
Nazwa: Pytanie o adres sygnalizatora pracy systemu
35H
Nazwa: Pytanie o adres obsługi przerwania
36H
Nazwa: Pytanie o rozmiar wolnego miejsca na dysku
37H
Nazwa: Ustaw / Pobierz znak przekazywania parametrów
38H
Nazwa: Pytanie o kod kraju lub go ustalenie
39H
Nazwa: Tworzenie katalogu
3AH Nazwa: Usuwanie katalogu
3BH Nazwa: Ustalenie katalogu bieżącego
3CH Nazwa: Tworzenie dojścia
3DH Nazwa: Otwieranie dojścia
3EH Nazwa: Zamykanie dojścia
3FH Nazwa: Czytanie przez dojście
40H
Nazwa: Pisanie przez dojście
41H
Nazwa: Usuwanie pozycji z katalogu
42H
Nazwa: Ustawianie wskaźnika w pliku
21.10.2012 11:50
PRZERWANIE 21H
Strona 9 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
42H
Nazwa: Ustawianie wskaźnika w pliku
43H
Nazwa: Sprawdzenie lub zmiana atrybutów pliku
4400H i
4401H
Nazwa: Pytanie / Ustalenie opisu urządzenia
4402H i
4403H
Nazwa: Wysłanie polecenia/ Odbieranie informacji od urządzenia znakowego
4403H i
4404H
Nazwa: Wysłanie polecenia/ Odbieranie informacji od urządzenia blokowego
4406H i
4407H
Nazwa: Pytanie o stan urządzenia wejścia / wyjścia
4408H Nazwa: Pytanie, czy urządzenie ma wymienny nośnik
4409H Nazwa: Pytanie, czy urządzenie blokowe jest dostępne przez sieć
440AH Nazwa: Pytanie, czy plik lub rządzenie jest dostępne przez sieć
440BH Nazwa: Ustalenie liczby nawrotów
440CH Nazwa: Ustalenie matrycy znaków urządzeń
440DH Nazwa: Ogólna kontrola urządzeń blokowych
440EH i
440FH
Nazwa: Pobierz / Ustaw mapę urządzenia
45H
Nazwa: Kopiowanie dojścia
46H
Nazwa: Zmiana dojścia
47H
Nazwa: Pytanie o katalog bieżący
48H
Nazwa: Przydzielenie pamięci procesowi
49H
Nazwa: Zwalnianie pamięci
4AH Nazwa: Zmiana wielkości przydzielonej pamięci
21.10.2012 11:50
PRZERWANIE 21H
Strona 10 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
4AH Nazwa: Zmiana wielkości przydzielonej pamięci
4B00H Nazwa: Ładowanie i uruchomienie programu
4B03H Nazwa: Ładowanie nakładki
4CH Nazwa: Zakończenie procesu
4DH Nazwa: Pobieranie kodu powrotu procesu potomnego
4EH Nazwa: Znajdowanie pierwszego pliku w katalogu
4FH Nazwa: Znajdowanie kolejnego pliku w katalogu
50H
Nazwa: Ustawia segment PSP
51H
Nazwa: Pobierz segment PSP
52H
Nazwa: Pobierz adres listy adresów MS-DOS
54H
Nazwa: Pytanie o stan sygnalizatora weryfikacji
55H
Nazwa: Utwórz PSP
56H
Nazwa: Zmiana pozycji w katalogu
57H
Nazwa: Sprawdzanie lub zmiana daty i czasu modyfikacji pliku
58H
Nazwa: Pytanie o strategię przydziału pamięci lub ustalenie jej
59H
Nazwa: Pytanie o pełny kod błędu
5AH Nazwa: Tworzenie pliku roboczego
5BH Nazwa: Tworzenie nowego pliku
5CH Nazwa: Rezerwowanie lub zwalnianie części pliku
5E00H Nazwa: Pytanie o nazwę stanowiska roboczego
5E02H
Nazwa: Ustalenie znaków sterujących drukarką
21.10.2012 11:50
PRZERWANIE 21H
Strona 11 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
5E02H
5F02H Nazwa: Pytanie o pozycję listy przypisań
5F03H Nazwa:
5F04H Nazwa: Usunięcie pozycji z listy przypisań
62H
Nazwa: Pobieranie adresu PSP
65H
Nazwa: Pobieranie rozszerzonych informacji o kraju
66H
Nazwa: Ustalenie / Pobranie globalnej matrycy znaków
Opis:
Funkcja ustala nową matrycę znaków, lub pobiera aktualną. W rejestrze AL
ustalamy, czy: 1-pobieramyglobalną matrycę znaków; 2- ustawiamy globalną
matrycę znaków. Jeśli ustawiamy to w rejestrze BX podajemy jej numer, w
przeciwnym wypadku funkcja w rejestrze BX poda numer aktualnie aktywnej.
Funkcja w rejestrze DX zawiera numer matrycy systemowej, czyli tej, która
została ustalona w czasie startu systemu. Funkcja dostępna od wersji MS DOS
3.30
67H
Nazwa: Ustawienie maksymalnej liczby otwartych dojść
Opis:
Funkcja ustala maksymalną liczbę otwartych stron. Liczba ta zostaje
przekazana w rejestrze. Jeśli liczba ta jest mniejsza niż 20 to zostaje ustawiona
na 20. Funkcja jest dopiero od wersji MS DOS 3.30
68H
Nazwa: Stabilizowanie pliku
Opis:
Funkcja przypisuje wszystkie bufory związane z plikiem, do którego dojście
przekazane zostaje w rejestrze BX. Funkcja jest dostępna dopiero w wersji MS
DOS 3.30
6CH
Nazwa: Rozszerzone otwieranie dojścia
Opis:
Funkcja otwiera plik o podanej nazwie, równocześnie definiując do niego
dojście z uprawnieniami do czytania i pisania w pliku. Funkcja jest najlepsza
przy otwieraniu plików w systemie OS/2. Występuje dopiero w wersji DOS'a
4.0. W razie wystąpienia błędu, kod tego jest przekazany w rejestrze AX.
Wywołanie:
21.10.2012 11:50
PRZERWANIE 21H
Strona 12 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
AH=6CH
AL=00H
BX - tryb otwarcia. Poszczególne bity mają następujące znaczenie:
Bity 0-3: tryb dostępu
Bity 4-6: tryb dzielenia
Bit 7 - dziedziczenie dojścia przez potomne procesy
Bit 13: 0=przy błędzie krytycznym wywoływane jest przerwanie 24H;
1=przerwanie nie jest wywołane
Bit 14: 0=buforowanie zapisu pliku na dysk;1=bezpośredni zapis na dysk
CX - atrybut pliku (w przypadku tworzenia)
DX - rodzaj działania, które ma zostać podjęte:
1H: otwiera plik, jeśli istnieje, w przeciwnym wypadku
funkcja kończy działanie sygnalizując błędem
11H: otwiera plik, jeśli istnieje, w przeciwnym wypadku
go tworzy
12H: jeśli plik istnieje, to zostaje skasowana jego
zawartość, w przeciwnym razie zostaje otworzony
DS:SI - nazwa zapisana w kodzie ASCIIZ
Powrót:
Ustawiony znacznik C
AX - kod błędu
BX=
0: plik został otwarty
1: plik został utworzony i otwarty
2: skasowana została poprzednia zawartość pliku izostał na nowo otwarty
Funkcje int 21 są wywoływane z numerem funkcji w AH Rejestr AX może być zmieniony,
jego zawartość nie jest gwarantowana. Jeśli pojawi się błąd, CF jest ustawiona na 1 i AX
zawiera kod błędu; INT 21,59 może być użyte do określenia przyczyny. Większość funkcji
INT 21 nie przywraca flag do stanu przed przerwaniem aby umożliwić zwracanie informacji
przez rejestr flag.
Przerwanie 21h funkcja 01h - Wczytanie z klawiatury z echem
AH = 01
przerwanie zwraca:
AL = Znak z standardowego urządzenia wejścia
21.10.2012 11:50
PRZERWANIE 21H
Strona 13 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
czeka na dane z STDIN i wyświetla na STDOUT
zwraca 0 dla rozszerzonych klawiszy, później funkcja musi być wywołana ponownie by
odczytać skankod
jeśli wciśnięto ~Ctrl-Break~, uruchamiane jest INT 23h
Przerwanie 21h funkcja 02h - Wyświetlanie znaku
AH = 02
DL = znak do wyświetlenia
przerwanie nie zwraca nic
wyświetla znak na STDOUT
backspace jest traktowany jak niedestruktywne przesunięcie kursora w lewo
jeśli wciśnięto ~Ctrl-Break~, uruchamiane jest INT 23H
Przerwanie 21h funkcja 05h - Wydruk znaku na drukarce
AH = 05
DL = znak do wypisania
przerwanie nie zwraca nic
wysyła znak w DL do STDPRN
przed drukowaniem czeka aż STDPRN jest gotowe
Przerwanie 21h funkcja 09h - Wypisz łańcuch
AH = 09
DS:DX = wskaźnik do łańcucha zakończonego znakiem "$"
przerwanie nie zwraca nic
wyświetla łańcuch znaków na STDOUT
backspace jest traktowane jako znak niedestruktywny
jeśli wciśnięto ~Ctrl-Break~, uruchamiane jest ~INT 23~
Przerwanie 21h funkcja 0Ah - Wpisz łańcuch z klawiatury
AH = 0AH
Przerwanie 21h funkcja 0Ch - Czyść bufor klawiatury, uruchom funkcję wczytania
AH = 0CH
AL = 01, 06, 07, 08 lub 0A (funkcje wczytania INT 21)
21.10.2012 11:50
PRZERWANIE 21H
Strona 14 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
przerwanie zwraca:
zob. wartości powrotu z INT 21,AL gdzie AL jest 1, 6, 7, 8 lub A
główną funkcją jest wyczyszczenie bufora klawiatury i wywołanie INT 21 z określoną
(w AL) funkcją
Przerwanie 21h funkcja 0Eh - Wybierz dysk
AH = 0Eh
DL = numer dysku (0-25, A: - Z:)
przerwanie zwraca:
AL = łączna liczba napędów logicznych włącznie z twardymi dyskami (1-26)
dla DOS 3.x+, ta funkcja przerwania zwraca liczbę napędów logicznych lub wartość
LASTDRIVE z CONFIG.SYS
Przerwanie 21h funkcja 19h - Pobierz aktualny napęd
AH = 19h
przerwanie zwraca:
AL = aktualny napęd (0=A,1=B,etc)
określa aktualny napęd
Przerwanie 21h funkcja 2Ah - Pobierz datę
AH = 2Ah
przerwanie zwraca:
AL = dzień tygodnia (0=Niedziela)
CX = rok (1980-2099)
DH = miesiąc (1-12)
DL = dzień (1-31)
odczytuje datę systemu z zegara DOS
aktualizuje obszar biosu pod adresem 0040:0070
Przerwanie 21h funkcja 2Ch - Pobierz czas
AH = 2Ch
przerwanie zwraca:
CH = godzina (0-23)
CL = minuta (0-59)
DH = sekunda (0-59)
DL = setna sekundy (0-99)
21.10.2012 11:50
PRZERWANIE 21H
Strona 15 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
odczytuje czas z zegara DOS
Przerwanie 21h funkcja 36h - Pobierz ilość wolnego miejsca na dysku
AH = 36h
DL = numer dysku (0=bieżący, 1=A:)
przerwanie zwraca:
AX = liczba sektorów w klastrze (= FFFF jeśli napęd jest niewłaściwy)
BX = liczba dostępnych klasterów
CX = liczba bajtów w sektorze
DX = liczba klasterów na dysku
używane do określenia wolnej przestrzeni na dysku
Przerwanie 21h funkcja 39h - Utwórz katalog
AH = 39h
DS:DX = wskaźnik do nazwy ścieżki jako łańcucha zakończonego zerem
przerwanie zwraca:
CF = 0 jeśli operacja się powiodła (= 1 jeśli błąd)
AX = kod błędu
tworzy podkatalog
zwraca błąd jeśli katalog już istnieje, element ścieżki nie został znaleziony, pełny katalog
lub dysk zabezpieczony przed zapisem
Przerwanie 21h funkcja 3Ah - Usuń katalog
AH = 3Ah
DS:DX = wskaźnik do nazwy ścieżki jako łańcucha zakończonego przez 00h
przerwanie zwraca:
CF = 0 jeśli sukces (= 1 jeśli błąd)
AX = kod błędu DOS
pozwala skasować katalog jeśli istnieje, jest pusty i nie aktualny
Przerwanie 21h funkcja 3Bh - Zmień katalog
AH = 3Bh
DS:DX = wskaźnik do ścieżki jako łańcucha zakończonego 00h
przerwanie zwraca:
21.10.2012 11:50
PRZERWANIE 21H
Strona 16 z 16
http://student.agh.edu.pl/~jliput/asm-doc/przerwania.html
CF = 0 jeśli sukces (= 1 jeśli błąd)
AX = kod błędu jeśli CF ustawiona
zmienia bieżący katalog na katalog określony przez wskaźnik DS:DX