Przerwania BIOS

Transkrypt

Przerwania BIOS
Instrukcja laboratoryjna
Systemy operacyjne
sem. 1
Ćwiczenie drugie (2 zajęcia)
Temat: Przerwania BIOS
Opracował:
dr inż. Arkadiusz Chrobot
1. Wstęp
BIOS (ang. Basic Input Output System) jest oprogramowaniem zapisanym
w pamięci nieulotnej i zajmującym się niskopoziomową obsługą sprzętu. Taki
rodzaj oprogramowania określa się angielskim mianem „firmware”. Jest ono ładowane do pamięci operacyjnej komputera natychmiast po jego uruchomieniu
poprzez nałożenie części adresów RAM na przestrzeń adresową pamięci nieulotnej. Tę technikę nazywa się pamięcią przesłaniającą. Pierwszy rozkaz BIOS zapisany jest pod adresem FFFF0h. Od realizacji tego rozkazu zaczyna pracę
procesor po otrzymaniu sygnału reset. Do zadań BIOS po uruchomieniu lub
zresetowaniu komputera należy: przetestowanie poprawności działania sprzętu,
sprawdzenie kodu swojego programu poprzez policzenie sumy kontrolnej,
umieszczenie w TWP1 adresów swoich procedur obsługi przerwań, inicjacja klawiatury i karty graficznej, sprawdzenie czy są w komputerze zainstalowane rozszerzenia BIOS (np. na katach rozszerzeń), incjalizacja niektórych obszarów
roboczych pamięci, a następnie wczytanie reszty systemu operacyjnego z określonego urządzenia. Część z wspomnianych wyżej procedur obsługuje przerwania, których źródłem są urządzenia wejścia – wyjścia oraz sytuacje krytyczne2.
Pozostałe dostarczają usług zarówno systemowi operacyjnemu, jak
i programom użytkownika. Programista piszący aplikacje dla systemu DOS ma
również możliwość zastąpienia oryginalnych procedur BIOSu własnymi procedurami, oraz bezpośredniego dostępu do pewnych zmiennych i struktur
danych tej części systemu.
Więcej informacji na temat BIOSu znajduje się w 13 rozdziale książki „DOS
5 od środka”.
2. Korzystanie z usług BIOSu
Mimo, że zadania przerwań BIOS w dużej mierze są inne niż zadania przerwań
DOS, to na poziomie języka asemblerowego, jak i również języka Pascal
w środowisku Turbo Pascal programista może korzystać z przerwań BIOSu
w ten sam sposób, jak z przerwań systemu DOS.
3. Zadania
Uwaga: Na pierwszych zajęciach sugeruję rozwiązać zadania 1-5, a na następnych pozostałe. Rozwiązania zadań muszą obsługiwać wyjątki, które mogą
1 Tablica Wektorów Przerwań
2 Te ostatnie są przerwaniami niemaskowalnymi, których nie można zablokować,
2
sygnalizować funkcje przerwań.
1. [0,5 punkt] Napisz program sprawdzający konfigurację komputera3.
2. [0,5 punkt] Napisz program odczytujący ilość dostępnej pamięci podstawowej.
3. [1 punkty] Napisz, korzystający z przerwań BIOSu program, który
wypisze w dwóch trybach tekstowych, w lewym górnym rogu ekranu cyfrę
„1” na czerwono, na środku literę „a” na zielono, a następnie ukryje kursor.
4. [0,5 punkty] Napisz program wykonujący prosty scrolling (przewijanie)
tekstu w górę i w dół ekranu. Należy skorzystać z przerwań BIOSu.
5. [1 punkty] Napisz program, który zaprezentuje użycie trybu graficznego.
Należy skorzystać z przerwań BIOSu.
6. [0,5 punkt] Napisz program, który będzie monitorował stan klawiszy
sterujących (shift, alt, itd.).
7. [1 punkty] Napisz program generujący błąd dzielenia przez zero4. W tym
programie przejmij przerwanie generowane przez wyjątek związany z tą
operacją. Napisz tak procedurę obsługi tego przerwania, aby sygnalizowała problem i „naprawiała” błąd nadając dzielnikowi wartość różną od zera.
8. [1 punkt] Napisz program, który zaprezentuje obsługę przerwania zegarowego (1Ch).
9. [1 punkty] Napisz program, który przejmie przerwanie zegarowe (1Ch),
w ten sposób, że do jego obsługi będą wykorzystywane dwie procedury5
3 Zrestartowanie komputera i uruchomienie programu POST nie będzie punktowane :-)
4 Chodzi o dzielenie całkowitoliczbowe.
5 To zadanie można rozwiązać bez użycia techniki "interrupt chaining”, jednakże za użycie tej
techniki będą przyznane dodatkowe 3 punkty.
3