AK
Ćw. 6
Przerwania
Cel ćwiczenia: Zapoznanie się z obsługą przerwań w komputerze PC
Sprzęt i oprogramowanie: Komputer PC z systemem DOS, lub maszyna wirtualna z
systemem DOS, program ADF wersja 1 (nie używać do tego ćwiczenia wersji 2).
Sprzęt dodatkowy: Układ TLPT
Literatura: P.Metzger, „Anatomia PC” Wyd. Helion, dowolne wydanie (Rozdział „System
obsługi przerwań sprzętowych”), E. Wróbel, „Asembler – praktyczny kurs”, Helion, 2004,
G. Michałek, „Asembler nie tylko dla orłów”, Intersoftland 1997.
Zagadnienia:
Tablica wektorów przerwań
Kontroler przerwań
Numeracja przerwań
Zapamiętywanie stanu procesora
Powrót z programu obsługi przerwania
Polecenia:
1.
Odpowiedz na pytania:
a.
w których komórkach pamięci umieszczony jest adres programu obsługi
przerwania nr 15?
b.
Drukarce LPT1 Przypisano przerwanie sprzętowe 7. Czy numer przerwania, które
dotrze do procesora jest taki sam?
c.
Czym różni się program obsługi przerwania od zwykłego program (ze względu na
sposób uruchamiania)?
d.
Jak wygląda typowa struktura programu obsługi przerwania?
e.
W jaki sposób można odczytać adres programu obsługi przerwania?
f.
W jaki sposób można zmienić adres programu obsługi przerwania?
2.
Ustal jakie numery w tablicy wektorów przerwań odpowiadają następującym
przerwaniom sprzętowym: IRQ0 (przerwanie zegarowe), IRQ1 (przerwanie klawiatury).
3.
Korzystając z programu AFD zajrzyj do tablicy wektorów przerwań i zanotuj adresy
przerwań 0, 3, 5, 8 i 9. ( W programie AFD wpisz polecenie DS=0. Na koniec przywróć
starą wartość DS wpisując DS=CS).
4.
Napisz program zliczający przerwania zegara. Zwróć uwagę, aby nie zakłócić innych
procesów korzystających z tego samego przerwania. Na końcu programu (zamiast IRET)
wstaw skok do standardowego programu obsługi tego przerwania. Licznik utwórz w
pamięci operacyjnej. Dodatkowo wyślij mniej znaczący bajt licznika do portu 378h.
5.
Napisz program zliczający przerwania klawiatury. Zwróć uwagę, aby nie zakłócić innych
procesów korzystających z tego samego przerwania. Na końcu programu (zamiast IRET)
wstaw skok do standardowego programu obsługi tego przerwania. Licznik utwórz w
pamięci operacyjnej. Dodatkowo wyślij mniej znaczący bajt licznika do portu 378h.
6.
Napisz program zliczający przerwania generowane przy naciśnięciu klawisza PrintScreen
(To przerwanie ma numer 5 w tablicy wektorów przerwań.)
7.
Napisz program zliczający impulsy podawane na linię ACK w łączu LPT1.
Wskazówki: Konieczne jest
a.
odblokowanie generowania przerwań w kontrolerze łącza LPT1 (patrz opis łącza LPT)
b.
odblokowanie przerwania IRQ7 w kontrolerze przerwań (patrz opis kontrolera
przerwań)
c.
wysłanie do kontrolera przerwań słowa sterującego EOI (End Of Interrupt) w
programie obsługi przerwania (patrz opis kontrolera przerwań)