background image

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). 

background image

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ń)