Przerwania sprzętowe systemu BIOS
Programy zamiany obslugi przerwania
l. CO NAZYWAMY PRZERWANIAMI
Mikrokompulery klasy IBM PC/XT/AT posiadają oprócz pamięci typu
RAM również pamięc stałą EPROM, w której zapisane są programy obsługi
będące pewnego rodzaju pośrednikiem między systemem operacyjnym, komputerem a sprzętem, który może być zaprojektowany i skonfigurowany różnie przez producentów. Zbiór tych programów nazywamy BIOS ( basic input/output system). Jednym z podstawowych kryteriów zgodności danego komputera z innym jest pełna realizacja programów BIOS wywoływanych za pośrednictwem rozkazów przerwań programowych INT. Programów tych nie należy wywoływać stosując adresy bezwzględne, mogą bowiem one być różne dla różnych modeli nawet tego samego komputera. Rozszerzeniem procedur systemu BIOS zawartych w pamięci operacyjnej jest plik dyskowy (systemowy) IBMBIO.COM
Możliwe jest rozróżnienie 256 przerwań. Tablica wektorów przerwań zawiera 32 bitowe logiczne adresy procedur (programów) osbługi przerwań. Poszczególne numery przerwań w mikrokomputerach kompatybilnych z IBM przyporządkowano następującym funkcjom:
INT 0-7H - przerwania związane z mikroprocesorem,
INT 8-FH - przerwania sprzętowe,
INT 10H-1FH - przerwania programowe, realizujące wywołania procedur podstawowej wersji BIOS,
INT 20H-3FH - przerwania programowe wykorzystywane przez funkcję MS-DOS,
INT 40H-41H, 46H - przerwania związane z pamięciami dyskowymi,
INT 42H - przerwanie wykorzystywane przez kartę EGA,
INT 43H - wskaźnik parametrów inicjujących
Ponieważ wektory przerwań są zlokalizowane w pamięci RAM, w sposób dosyć prosty można zrealizować zamianę obsługi przerwania umieszczając odpowiedni program w dowolnym miejscu pamięci operacyjnej i zmieniając adres w tablicy wektorów przerwań. O przerwaniach jest mowa również w punkcie 5 ćwiczenia nr 4.
2. LISTA WAŻNIEJSZYCH PRZERWAŃ SYSTEMU BIOS
INT 10H - obsługa ekranu monitora
funkcję.
(realizowana funkcja jest określona zawartością rejestru AH, we określamy parametry wejściowe, wy-parametry wyjąciowe);
AH=0h wybór trybu pracy monitora,
we. AL=0 tekst 40X25 mono;
AL=1 tekst 40x25 kolor;
AL=2 tekst 80x25 mono;
AL=3 tekst 80x25 kolor, CGA;
AL=4 grafika 320x200 kolor
AL=5 grafika 320x200 mono
AL=6 grafika 640x200 mono,
AL=7 tekst 80x25 mono, Herc;
AL=16 grafika 640x350 16 kolorów, EGA;
AL=19 grafika 320x200 256 kolorów, MCGA;
AH=1h ustaw kształt kursora
we. CH (bity 0-4) linia początku kursora;
CL (bity 0-4) linia końca kursora;
CH (bity 5-1) kursor niewidoczny.
CL (bit 6=1) przyśpieszone migotanie;
AH=2h ustaw pozycję kursora.
we: DH wiersz (0-24);
DL klumna (0-39/79);
BH strona (0-tryb graficzny).
AH=3h czytaj pozycję kursora;
we: BH strona (0-tryb graficzny);
wy. DH wiersz (0-42);
DL kolumna (0-39/79)
CX rozmiary kursora;
AH=5h ustaw stronę w trybie tekstowym;
we: AL numer strony (0-7 dla trybów 0,1 lub 0-3 dla trybów 2,3);
AH=6h przewiń aktywną stronę w gorę;
we: AL liczba linii; (AL=0 czyść całe okno);
CH wiersz górnego lewego narożnika;
CL kolumna górnego lewego narożnika;
DH wiersz dolnego prawego narożnika;
DL kolumna dolnego prawego narożnika;
BH atrybut spacjowania,
AH=8h czytaj znak i atrybut z pozycji kursora;
we: BH numer strony;
wy: AL znak;
AH atrybót (kolor) znaku (1..15); 128-migotanie;
AH-9h pisz znak z atrybutem na pozycji kursora;
we: BH numer strony;
wy: CX liczba znaków;
AL znak;
BL atrybut (kolor) znaku; BL=(bit 7=1) ustaw kolor XOR z kolorem aktualnym;
AH=Fh czytaj aktualny status video;
wy: AL tryb video (podobnie jak AH=0h);
AH liczba kolumn znakowych na ekranie;
BH numer aktywnej strony;
INT 11h (17) konfiguracja sprzętowa komputera;
wy: AX (bity 15,14) liczba drukarek (maksymalnie 3);
AX (bit 12) czy istnieje port gier;
AX (bity 11-9) liczba portów RS 232 (maksymalnie 7);
AX (bity 7,6) liczba napędów dysków elastycznych;
AX (bity 5,4) tryb video ustalony po inicjalizacji;
AX (bit 1) koprocesor arytmetyczny;
AX (bit 0) start systemu z dyskietki;
INT 12h ustalenie rozmiaru pamięci RAM;
wy: AX liczba ciągłych bloków 16KB pamięci;
INT 16h (22) obsługa klawiatury
AH=0h czytaj znak z bufora klawiatury-czekaj na klawisz;
wy: AL kod znaku (ASCII)
AH rozszerzony kod klawiatury (jeżeli w AL=0);
AH=1h test obecności znaku w buforze klawiatury;
wy: ZF-1 bufor pusty;
ZF=0 znak przekazany do AX ale pozostaje w buforze;
AH=2h czytaj status klawiszy kontrolnych;
wy: AL kody klawiszy,
80h Ins;
40h Caps Lock;
20h Num Lock;
10h Scroll Lock;
8h Alt;
4h Ctrl
2h Left Shift
1h Right Shift
INT 17h (23) obsługa drukarki;
AH=0h drukuj znak;
we: AL znak;
DX numer portu drukarki;
wy: AH status;
AH (bit 0=1) zbyt długi czas oczekiwania;
(bit 3=1) błąd wejścia wyjścia;
(bit 4=1) drukarka wybrana;
(bit 5=1) brak papieru;
(bit 6=1) potwierdzenie przyjęcia znaku;
(bit 7=1) drukarka nie zajęta;
AH=1h inicjalizacja drukarki;
we: DX numer drukarki;
wy: AH status drukarki;
AH=2h czytaj status drukarki;
we: DX numer drukarki;
wy: AH status;
INT 1Ah (26) zegar i data systemowa;
AH=0h czytaj część licznika;
wy: CX starsza część licznika;
DX młodsza część licznika;
AL=0 ostatni odczyt był w ciągu 24 godzin;
AH=1h ustaw zegar;
we: CX starsza część licznika;
DX młodsza część licznika;
Ćwiczenie 3
Przerwania systemu DOS
1. PROCEDURY SYSTEMOWE MS-DOS
MS-DOS ma wiele procedur wywoływanych podobnie jak procedury BIOS za pomocą rozkazów INT, realizujących podstawowe i często używane funkcje. Wszystkie uniwersalne funkcje systemowe są wywoływane za pośrednictwem przerwania INT 21h (33). Poszczególne funkcje są rozróżniane za pomocą numeru umieszczonego w rejestrze AH przed ich wywołaniem.
Możemy wyróżnić pięć grup wywołań systemowych:
- wprowadzanie i wyprowadzanie łańcuchów znakowych (CON, PRN);
- zarządzanie i gospodarowanie plikami dyskowymi i katalogami;
- zarządzanie programami;
- zarządzanie pamięcią operacyjną;
- różne funkcję systemowe.
Z przerwa systemowych MS-DOS w programach użytkowych można jedynie korzystać z przerwa 20h, 21h, 25h, 26h i 27h.
W ćwiczeniu laboratoryjnym korzystać będziemy jedynie z przerywania INT 21h, które powoduje wywołanie uniwersalnych funkcji systemowych.
2. NAJWAŻNIEJSZE FUNKCJĘ PRZERWANIA 21h
Poszczególne funkcje przerwania 21h wywołujemy umieszczając w rejestrze AH odpowiednią liczbę będącą numerem funkcji. Poniżej przedstawione są niektóre z nich:
01h - pobranie znaku z klawiatury;
wy: AL - znak uzyskany ze standardowego wejścia - CON, znaki rozszerzone uzyskuje się po otrzymaniu AL=0 i ponownych wywołaniu przerwania tą funkcją;
02h - wysłanie znaku na monitor;
we: DL - znak do wysłania na standardowe wyjście;
05h - wysłanie znaku na port drukarki (PRN);
we: DL - znak do wysłania ze standardowego portu drukarkowego LPT1.
09h - wysłanie napisu na monitor;
we: DS:DX - adres napisu zakończonego znakiem "$";
0Ch - czyszczenie bufora klawiatury;
we: AL - wpisujemy tu numer funkcji, która ma zostać wywołana po czyszczeniu bufora klawiatury; (dostępne funkcje: 1, 6, 7, 8, 0Ah);
0Eh - ustaw aktualny dysk dla systemu DOS;
we: DL - numer dysku, który DOS ma przyjąć za aktualny; (0=A, 1=B...);
wy: AL - liczba dysków dostępnych w systemie;
19h - pobierz numer aktualnego dysku;
wy: AL - aktualny numer dysku DOS; (tak jak w funkcji 0Eh);
2Ah - pobierz datę systemową;
wy: AL - dzień tygodnia (0=Nie, 1=Pon,...6=Sob);
CX - rok (1980-2099);
DH - miesiąc (1-12);
DL - dzień (1-31);
2Bh - ustaw datę systemową;
we: tak jak w funkcji 2Ah;
wy: AL - wynik operacji (0-poprawnie, F?h - błędnie);
2Ch - pobierz czas systemowy;
wy: CH - godzina (0-23);
CL - minuta (0-59);
2Dh - ustaw czas systemowy;
we: tak jak dla funkcji 2Ch;
wy: tak jak dla funkcji 2Bh;
30h - pobierz wersję systemu DOS;
wy: AL - główny numer wersji systemu DOS;
AH - poboczny numer wersji systemu DOS;
31h - utwórz procedurę rezydętną;
we: AL - kod zakończenia (0-normalnie);
DX - rozmiar pamięci w 16 bajtowych paragrafach na procedurę rezydętną;
36h - wolne miejsce na dysku;
we: DL - numer dysku (0=aktualny, 1-A..);
AX - liczba sektorów w bloku;
BX - liczba dostępnych bloków (clusters)
DX - całkowita liczba bloków;
CX - liczba bajtów na sektór; (wolne miejsce na dysku AX*BX*CX)
39h - utwórz katalog;
we: DS:DX - adres nazwy nowego katalogu; (ASCIIZ);
wy: AX - kod błędu według systemu DOS;
3Dh - otwórz plik (open file);
we: DS DX - adres nazwy pliku (ASCIIZ);
AL tryb otwarcia pliku;
bit 7=1
bity |6|5|4|
|0|0|1| czytanie lub zapis;
|0|1|0| czytanie;
|0|1|1| zapis;
bit 3=1 plik systemowy;
bit 2=1 katalog podstawowy
bit 1=1 podkatalog
bit 0=1 plik archiwum;
wy: AX - kod błędu według systemu DOS
3Eh - zamknięcie pliku;
we: BX numer kanału logicznego przyporządkowanego zamykanemu plikowi:
i tak:
0 standardowe urządzenie we klawiatura,
1 standardowe urządzenie wy monitor,
3 standardowe urządzenie transmisji szeregowej COM1,
4 standardowe urządzenie transmisji równoległej LPT1;
wy: AX - kod błędu według systemu DOS;
3Fh - czytaj dane z pliku (read file);
we: BX - numer kanału logicznego przyporządkowany czytanemu plikowi;
DS:DX - adres bufora do odczytu danych;
CX - liczba bajtów do odczytu;
wy: AX - kod błędu według systemu DOS;
40h - zapisz dane do pliku (write file);
we: BX - numer kanału logicznego przyporządkowany czytanemu plikowi;
DS:DX - adres bufora do zapisu danych;
CX - liczba bajtów do zapisu;
wy: AX - kod błędu według systemu DOS;
41h - usuń plik (delete file);
we: DS:DX - adres nazwy pliku do usunięcia;
wy: AX - kod błędu według systemu DOS;
Wyszukiwarka
Podobne podstrony:
Rozdział 04 System obsługi przerwań sprzętowychInstrukcje uaktualniania systemu BIOSBudowa PCB System BiosSystemyWbudowane Sprzet6Systemy pomiarowe Sprzętwylaczenie aktualizacji systemu XPEV (Electric Vehicle) and Hybrid Drive Systemssprzęt wędkarski cz 1system ósemkowyANALIZA KOMPUTEROWA SYSTEMÓW POMIAROWYCH — MSEInstalacja systemu Windows z pendrive awięcej podobnych podstron