Politechnika Śląska
Wydział AEiI
Laboratorium
z Podstaw Informatyki
Grupa 4., sekcja 2.
Wioletta Bujak
Marek Kudera
Arkadiusz Mazur
Zadanie.
Napisać rozkaz przerywalny, program z użyciem tego rozkazu oraz procedury obsługi przerwania w dwóch wersjach: z wykorzystaniem i bez wykorzystania stosu.
Rozwiązanie 1. Wersja bez stosu.
Program:
Petla: NIC Koniec
POB PrzerwPrg
SOM Koniec
SOB Petla
Koniec: SOB Koniec
St1: RST 1D
StM1: RST -1D
PrzerwPrg: RST 0D
ILPrzerw: RPA
AK: RPA
Przerw: RPA
LAD AK
POB ILPrzerw
DOD St1
LAD ILPrzerw
POB AK
PZP Przerw
PrzerwKon: RPA
LAD AK
POB StM1
LAD PrzerwPrg
PZP PrzerwKon
POB AK
KON
Dodatkowe rozkazy:
Rozkaz
Typ = EW
Kod = 101
Mne = NIC
Opis = '<NIC> ze stosem'
Akcja
czyt wys wei il;
eni;
CZY NIE STN_INT DALEJ Kon;
wyl as wes;
wyap wea wel;
pisz il rint;
Kon: wyl wea;
Koniec
Rozkaz
Typ = EW
Kod = 101
Mne = PZP
Opis = 'Powrot z przerwania bez stosu'
Akcja
czyt wys wei il;
wyad wea;
czyt wys sa wel wea;
Koniec
Rozwiązanie 2. Rozwiązanie ze stosem.
Program:
UWS StX
Petla: NIC Koniec
POB PrzerwPrg
SOM Koniec
SOB Petla
Koniec: SOB Koniec
St1: RST 1D
StM1: RST -1D
PrzerwPrg: RST 0D
ILPrzerw: RPA
StX: RST 50D
AK: RPA
Przerw: LAD AK
POB ILPrzerw
DOD St1
LAD ILPrzerw
POB AK
PZP Przerw
PrzerwKon: LAD AK
POB StM1
LAD PrzerwPrg
POB AK
PZP PrzerwKon
KON
Dodatkowe rozkazy:
Rozkaz
Typ = EW
Kod = 101
Mne = NIC
Opis = '<NIC> ze stosem'
Akcja
czyt wys wei il;
eni;
CZY NIE STN_INT DALEJ Kon;
wyl as wes;
wyx weja pob weak;
jedn weja dod weak;
wyak wex sa wea;
pisz;
wyap wel rint;
Kon: wyl wea;
Koniec
Rozkaz
Typ = EW
Kod = 101
Mne = PZP
Opis = 'Powrot z przerwania ze stosem'
Akcja
czyt wys wei il;
wyx sa wea;
czyt wys sa wel wea;
wyak wes;
wyx weja pob weak;
jedn weja ode weak;
wyak wex;
wys weja pob weak;
Koniec
Rozkaz
Typ = EW
Kod = 101
Mne = UWS
Opis = 'Ustaw wskaznik stosu'
Akcja
czyt wys wei il;
wyad wea;
czyt wys wex;
wyl wea;
Koniec
Uwagi.
Procedura obsługi przerwania Przerw jest procedurą wspomnianą w temacie laboratorium. Procedura PrzerwKon ma za zadanie przerwać wykonanie programu poprzez nadanie wartości ujemnej zmiennej PrzerwPrg.
System przerwań.
W chwili wystąpienia przerwania jest ono zgłaszane do rejestru zgłoszeń ( RZ ). Zgłoszenia w nim uporządkowane są według priorytetów. Następnie, o ile nie jest ono zamaskowane w rejestrze maski ( RM ), w chwili wystąpienia sygnału eni jest wpisywane do rejestru przerwań, gdzie może być tylko jedno przerwanie. Generowany jest sygnał INT, a także obliczany adres procedury obsługi przerwania. Rozkaz, który wygenerował sygnał eni, zapamiętuje licznik. Do rejestru licznika przepisywany jest adres procedury obsługi przerwania, który umieszczany jest wcześniej na magistrali adresowej rozkazem wyap. Licznik zapamiętywany jest na stosie lub w pierwszej komórce procedury obsługi. Sprzętowa obsługa przerwania kończy się sygnałem rint, który resetuje rejestr zgłoszeń oraz sygnał INT.W tym momencie rozpoczyna się programowa obsługa przerwania. Wszystkie rejestry zmieniane w czasie jej wykonywania muszą być wcześniej zapamiętane i przywrócone przed jej zakończeniem. Rozkaz powrotu z przerwania przywraca stan licznika sprzed wywołania procedury obsługi.