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:
Odpowiedz na pytania:
w których komórkach pamięci umieszczony jest adres programu obsługi
przerwania nr 15?
Drukarce LPT1 Przypisano przerwanie sprzętowe 7. Czy numer przerwania, które dotrze do procesora jest taki sam?
Czym różni się program obsługi przerwania od zwykłego program (ze względu na sposób uruchamiania)?
Jak wygląda typowa struktura programu obsługi przerwania?
W jaki sposób można odczytać adres programu obsługi przerwania?
W jaki sposób można zmienić adres programu obsługi przerwania?
Ustal jakie numery w tablicy wektorów przerwań odpowiadają następującym przerwaniom sprzętowym: IRQ0 (przerwanie zegarowe), IRQ1 (przerwanie klawiatury).
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).
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.
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.
Napisz program zliczający przerwania generowane przy naciśnięciu klawisza PrintScreen (To przerwanie ma numer 5 w tablicy wektorów przerwań.)
Napisz program zliczający impulsy podawane na linię ACK w łączu LPT1.
Wskazówki: Konieczne jest
odblokowanie generowania przerwań w kontrolerze łącza LPT1 (patrz opis łącza LPT)
odblokowanie przerwania IRQ7 w kontrolerze przerwań (patrz opis kontrolera przerwań)
wysłanie do kontrolera przerwań słowa sterującego EOI (End Of Interrupt) w programie obsługi przerwania (patrz opis kontrolera przerwań)