[ Pobierz całość w formacie PDF ]

AH = BIOSowy kod klawisza (skankod)
AL = kod klawisza ASCII
" funkcja 2 - pobierz stan klawiszów przełączających:
Argumenty:
f& AH = 2
Zwraca:
f& AL = flagi:
bit7 = klawisz Insert jest aktywny
bit6 = CapsLock aktywny
bit5 = NumLock aktywny
bit4 = Scroll Lock aktywny
bit3 = naciśnięty klawisz ALT
bit2 = naciśnięty klawisz CTRL
bit1 = naciśnięty lewy klawisz SHIFT
bit0 = naciśnięty prawy klawisz SHIFT
" funkcja 4 (Tandy 2000, ale chyba nie tylko) - opróżnij bufor klawiatury:
Argumenty:
f& AH = 4
int 21h (DOS)
" funkcja 1 - czytaj klawisz:
Argumenty:
f& AH = 1
Zwraca:
f& AL = kod klawisza ASCII
" funkcja 2 - wyświetl znak:
Argumenty:
f& AH = 2
f& DL = kod ASCII znaku do wypisania
184 Bogdan Drozdowski
2007-11-12 Język asembler dla każdego Bogdan Drozdowski
" funkcja 9 - wyświetl napis:
Argumenty:
f& AH = 9
f& DS:DX = adres łańcucha znaków zakończonego znakiem dolara $
" funkcja 2A - pobierz datę systemową:
Argumenty:
f& AH = 2Ah
Zwraca:
f& CX = rok (1980-2099)
f& DH = miesiąc
f& DL = dzień
f& podobno AL = dzień tygodnia (0=niedziela)
" funkcja 2B - ustaw datę systemową:
Argumenty:
f& AH = 2Ah
f& CX = rok (1980-2099)
f& DH = miesiąc (1-12)
f& DL = dzień (1-31)
Zwraca:
f& AL = status (0=sukces, FF=błąd)
" funkcja 2C - pobierz czas systemowy:
Argumenty:
f& AH = 2Ch
Zwraca:
f& CH = godzina
f& CL = minuta
f& DH = sekunda
f& DL = setne sekundy (nie zawsze)
" funkcja 2D - ustaw czas systemowy:
Argumenty:
f& AH = 2Dh
f& CH = godzina
f& CL = minuta
f& DH = sekunda
f& DL = setne sekundy
Zwraca:
f& AL = status (0=sukces, FF=błąd)
" funkcja 3C - utwórz plik (jeśli istnieje, skróć do zerowej długości):
Argumenty:
Bogdan Drozdowski 185
Bogdan Drozdowski Język asembler dla każdego 2007-11-12
f& AH = 3Ch
f& CX = atrybuty (patrz niżej)
f& DS:DX = wskaznik na nazwę pliku, zakończoną bajtem zerowym
Zwraca:
f& gdy brak błędu: flaga CF=0 i AX = uchwyt do pliku
f& gdy błąd: flaga CF=1 i AX = numer błędu: 3, 4 lub 5 (patrz niżej)
Atrybuty pliku:
f& bit0 = plik tylko do odczytu
f& bit1 = ukryty
f& bit2 = systemowy
f& bit3 = etykieta dysku (ignorowane)
f& bit4 = zarezerwowany, musi być równy 0 (katalog)
f& bit5 = bit archiwalny
f& bit7 = udostępnialność w Novell NetWare
Najczęstsze kody błędów:
f& 0 = brak błędu
f& 1 = nieprawidłowy numer funkcji
f& 2 / 3 = plik / ścieżka nie znaleziona
f& 4 = za dużo otwartych plików
f& 5 = brak dostępu
f& 6 = niewłaściwy uchwyt do pliku
f& 8 = za mało pamięci
f& A = nieprawidłowe środowisko
f& B = nieprawidłowy format
f& C = nieprawidłowy kod dostępu
f& 56h = nieprawidłowe hasło
Przykład:
mov ah, 3ch ; utwórz plik
xor cx, cx ; żadnych atrybutów
mov dx, plik ; DS:DX = adres nazwy pliku
int 21h
jnc plik_ok ; sprawdz, czy wystąpił błąd
" funkcja 3D - otwórz istniejący plik:
Argumenty:
f& AH = 3Dh
f& AL = tryb dostępu (patrz niżej)
f& DS:DX = adres nazwy pliku zakończonej bajtem zerowym
f& CL = maska atrybutów pliku do wyszukiwania (tylko serwery)
Zwraca:
f& gdy brak błędu: flaga CF=0 i AX = uchwyt do pliku
f& gdy błąd: flaga CF=1 i AX = numer błędu: 1, 2, 3, 4, 5, C, 56h (patrz wyżej)
Tryb dostępu do pliku:
f& bit0-2 = tryb dostępu:
000 = tylko do odczytu
186 Bogdan Drozdowski
2007-11-12 Język asembler dla każdego Bogdan Drozdowski
001 = tylko do zapisu
010 = odczyt/zapis
f& bit3 = 0
f& bit4-6 = tryb współdzielenia:
000 = tryb kompatybilności
001 = zabroń innym odczytu i zapisu
010 = zabroń innym zapisu
011 = zabroń innym odczytu
100 = nie zabraniaj nikomu niczego
f& bit7 = prywatność. Plik nie będzie dziedziczony przez procesy potomne
Przykład:
mov ax, 3d02h ; otwórz plik R/W, tryb zgodności
mov dx, plik ; DS:DX = adres nazwy pliku
int 21h
jnc otw_ok
" funkcja 3E - zamknij plik:
Argumenty:
f& AH = 3Eh
f& BX = uchwyt do pliku
Zwraca:
f& gdy brak błędu: flaga CF=0
f& gdy błąd: flaga CF=1 i AX = numer błędu: 6 (patrz wyżej)
" funkcja 3F - czytaj z pliku:
Argumenty:
f& AH = 3Fh
f& BX = uchwyt do pliku
f& CX = liczba bajtów do odczytania
f& DS:DX = adres bufora, który ma przyjąć dane
Zwraca:
f& gdy brak błędu: flaga CF=0, AX = liczba przeczytanych bajtów
f& gdy błąd: flaga CF=1 i AX = numer błędu: 5, 6 (patrz wyżej)
" funkcja 40h - zapisz do pliku:
Argumenty:
f& AH = 40h
f& BX = uchwyt do pliku
f& CX = liczba bajtów do zapisania
f& DS:DX = adres bufora zawierającego dane do zapisania
Zwraca:
f& gdy brak błędu: flaga CF=0, AX = liczba zapisanych bajtów
f& gdy błąd: flaga CF=1 i AX = numer błędu: 5, 6 (patrz wyżej)
Bogdan Drozdowski 187
Bogdan Drozdowski Język asembler dla każdego 2007-11-12
" funkcja 41h - skasuj plik:
Argumenty:
f& AH = 41h
f& DS:DX = adres nazwy pliku, zakończonej bajtem zerowym
f& maska atrybutów (tylko serwery)
Zwraca:
f& gdy brak błędu: flaga CF=0
f& gdy błąd: flaga CF=1 i AX = numer błędu: 2, 3, 5 (patrz wyżej)
" funkcja 42h - ustaw bieżącą pozycję w pliku:
Argumenty:
f& AH = 42h
f& AL = skąd odliczamy pozycję:
0 = początek pliku
1 = bieżąca pozycja w pliku
2 = koniec pliku
f& BX = uchwyt do pliku [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • littlewoman.keep.pl