Você está na página 1de 2

Wykonawca: Michał Trybus

Laboratorium Podstaw Informatyki


Temat: Układ przerwań maszyny W Nr.lab.: 4
Rok termin Rodz. grupa Data lab. Data oddania prowadzący ocena
akademicki studiów sprawozdania
2009/2010 poniedziałek dzienne 1 19.04.2010 17.05.2010 Robert
semestr letni 13:15-16:15 Brzeski

Rozkazy

Rozkaz Komentarz
ROZKAZ WPR; // wczytaj znak z urządzenia zewnętrznego (przerywalny)
ARGUMENTY 1;
czyt wys wei il;
wyak weja ode weak start; kasuj akumulator
@0 eni wyg weja ode weak JEŻELI Z TO @1 GDY NIE @0; czekaj na gotowość i skacz pod @1
@1 wyrb weja przep weak JEŻELI int TO @i; (RB) -> Ak, obsłuż przerwanie jeśli jest
wyl wea KONIEC; koniec jeśli nie ma przerwania
@i dws wyl as wes; przesuń wskaźnik stosu, przygotuj adres następnej instrukcji
wyws wea; zapisz adres szczytu stosu do A
pisz wyap wel wea rint; zapisz adres powrotu na stosie, skocz pod przerwanie
ROZKAZ WYP; // wyprowadź znak na urządzenie zewnętrzne (przerywalny)
ARGUMENTY 1;
czyt wys wei il;
wyak werb start weja ode weak; (Ak) -> RB, 0 -> Ak, rozpocznij wyprowadzanie danej
@0 eni wyg weja ode weak JEŻELI z TO @1 GDY NIE @0; czekaj na gotowość i skacz pod @1
@1 JEŻELI int TO @i; obsłuż przerwanie jeśli jest
wyl wea KONIEC; koniec jeśli nie ma przerwania
@i dws wyl as wes; przesuń wskaźnik stosu, przygotuj adres następnej instrukcji
wyws wea; zapisz adres szczytu stosu do A
pisz wyap wel wea rint; zapisz adres powrotu na stosie, skocz pod przerwanie
ROZKAZ PZS; // pobierz ze stosu (przerywalny)
Argumenty 0;
czyt wys wei il;
wyws wea iws eni; zapisz WS do A, przesuń WS w dół, rozpocznij obsługę przerwań
czyt wys weja przep weak JEŻELI int TO @i; prześlij adres ze szczytu stosu, do Ak, obsłuż ewentualne przerwanie
wyl wea KONIEC; koniec jeśli nie ma przerwania
@i dws wyl as wes; przesuń wskaźnik stosu, przygotuj adres następnej instrukcji
wyws wea; zapisz adres szczytu stosu do A
pisz wyap wel wea rint; zapisz adres powrotu na stosie, skocz pod przerwanie
ROZKAZ MAS; // Ustaw rejestr maski [(Ak) -> RM]
Argumenty 0;
czyt wys wei il;
wyak sa werm; (Ak) -> RM
wyl wea; koniec
ROZKAZ UMAS; // Odczytaj rejestr maski [(RM) -> Ak]
Argumenty 0;
czyt wys wei il;
wyrm as weja przep weak; (RM) -> Ak
wyl wea; koniec
sob start // wektor przerwań // przerwanie 1
sob int1 int1: dns // zachowaj Ak na stosie
sob int2 umas // odczytaj maskę...
sob int3 dns // i zachowaj na stosie
sob int4 pob Maska1 // przygotuj odpowiednią maskę
start: wpr 1 // wczytaj znak mas // załaduj do RM
ład znak // zapisz pob i1 // pobierz i1
p: wyp 2 // w pętli: ode Jeden // i dekrementuj
pob znak // wypisuj znak soz koncz1 // jeśli wykonano już 5 razy -> koniec
sob p ład i1 // zapisz nowy i1
znak: RPA pob Trzy // inicjalizuj Ak ilością wypisań
// etykiety kończące program, petla1: soz dalej1 // koniec pętli? -> idź do dalej1
// zachowujące numer przerwania w Ak ode Jeden // dekrementuj Ak
koncz1: pob Jeden ład ile1 // zachowaj Ak
stp pob CJeden // pobierz stałą znaku...
koncz2: pob Dwa wyp 2 // i wypisz
stp pob ile1 // przywróć licznik
koncz3: pob Trzy sob petla1 // skocz na początek pętli
stp dalej1: pzs // pobierz maskę ze stosu
koncz4: pob Cztery mas // przywróć starą maskę
stp pzs // pobierz ze stosu stary Ak
// stałe do liczników pętli pwr // koniec
Jeden: RST 1 CJeden: RST '1' // stała znaku do wypisywania
Dwa: RST 2 ile1: RPA // do tymczasowego przechowania Ak
Trzy: RST 3 Maska1: RST 15 // maskuje wszystko, bo int1 ma max.
Cztery: RST 4 // priorytet
Piec: RST 5 i1: RST 5 // ile wywołań przerw. i1 pozostało
Siedem: RST 7
Dziewiec: RST 9

Pozostałe przerwania int2, int3, int4 są analogiczne do int1, różnią się o stałe dotyczące ilości cyfr wypisywanych na ekran,
rodzaju tych cyfr, miejsc skoku w przypadku piątego wystąpienia danego przerwania i wartości maski:

int2: dns int3: dns int4: dns


umas umas umas
dns dns dns
pob Maska2 pob Maska3 pob maska4
mas mas mas
pob i2 pob i3 pob i4
ode Jeden ode Jeden ode Jeden
soz koncz2 soz koncz3 soz koncz4
ład i2 ład i3 ład i4
pob Piec pob Siedem pob Dziewiec
petla2: soz dalej2 petla3: soz dalej3 petla4: soz dalej4
ode Jeden ode Jeden ode Jeden
ład ile2 ład ile3 ład ile4
pob CDwa pob CTrzy pob CCztery
wyp 2 wyp 2 wyp 2
pob ile2 pob ile3 pob ile4
sob petla2 sob petla3 sob petla4
dalej2: pzs dalej3: pzs dalej4: pzs
mas mas mas
pzs pzs pzs
pwr pwr pwr
CDwa: RST '2' CTrzy: RST '3' CCztery:RST '4'
ile2: RPA ile3: RPA ile4: RPA
Maska2: RST 7 // maskuj 2, 3, 4 Maska3: RST 3 // maskuj 3 i 4 Maska4: RST 1 // tylko 4
i2: RST 5 i3: RST 5 i4: RST 5

Você também pode gostar