Wykonawca: |
---|
Laboratorium Podstaw Informatyki |
Temat: |
Rok akademicki |
2006/2007 semestr letni |
ROZWIĄZANIA
Obliczanie liczby wystąpień określonej wartości w
N-elementowej tablicy bajtów.
start:
POB rozmiar
ODE licznik
SOM koniec
przesuwacz:
POB tablica
ODE szukana
SOM dalej
ODE jeden
SOM ta_sama
dalej: POB przesuwacz
DOD jeden
ŁAD przesuwacz
POB licznik
DOD jeden
ŁAD licznik
SOB start
ta_sama:
POB wynik
DOD jeden
ŁAD wynik
SOB dalej
koniec:
STOP
tablica:
RST 1
RST 2
RST 7
szukana: RST 7
wynik: RPA
rozmiar: RST 3
licznik: RST 1
jeden: RST
Dodatkowe rozkazy.
SDP – skok do podprogramu
(Zapamiętuje ślad i idzie do podprogramu.)
czyt wys wei il ;
wyak wes ;
wyx weja przep weak ;
dak ;
wyak wex sa wea ;
wys weja przep weak ;
wyls wes ;
pisz wyad wel wea ;
PZS – pobierz ze stosu
(Pobiera i inkrementuje wskaźnik na stos.)
czyt wys wei il ;
wyx weja przep weak sa wea ;
czyt iak ;
wyak wex ;
wys weja przep weak wyl wea ;
DNS – dodaj na stos
(Dodaje i dekrementuje wskaźnik na stos.)
czyt wys wei il ;
wyak wes ;
wyx weja przep weak ;
dak ;
wyak wex sa wea ;
pisz wys weja przep weak wyl wea ;
PZP – powrot z podprogramu
(Pobiera ślad i skacze w to miejsce programu głównego.)
czyt wys wei il ;
wyx weja przep weak sa wea ;
czyt iak ;
wyak wex ;
wys sa wel wea ;
Potęgowanie z wykorzystaniem podprogramu mnożenia.
POB a
ODE jeden
SOM a_rowne_0
POB b
ODE jeden
SOM b_rowne_0
POB b
ODE jeden
ŁAD licznik
POB a
ŁAD wynik * wynik=a gdy b min 1
POB b
ODE dwa
SOM koniec *wynik=a (b=1)
petla:
POB licznik
ODE jeden
ŁAD licznik
SOM koniec * sprawdzanie
POB wynik
DNS
POB a
DNS
SDP mnoz * wywolanie podpr
PZS * pobiera wynik
ŁAD wynik
SOB petla
a_rowne_0: *0^x=0
POB zero
ŁAD wynik
SOB koniec
b_rowne_0: *x^0=1
POB jeden
ŁAD wynik
SOB koniec
koniec:
POB wynik
STOP
mnoz:
PZS * pobranie ze stosu adresu powrotu z podprogramu
ŁAD adres
PZS * pobranie argumentów
ŁAD x
PZS * pobranie argumentów
ŁAD wynik
ŁAD tmp_wynik
POB x
ODE jeden
ŁAD x
petla_x: * pętla wykonująca mnożenie przy pomocy dodawania
POB x
ODE jeden
SOM koniec_x
ŁAD x
POB tmp_wynik * sumowanie
DOD wynik
ŁAD tmp_wynik
SOB petla_x
koniec_X:
POB tmp_wynik
DNS * przekazania wyniku mnożenia
POB adres
DNS * przekazania adresu powrotu
PZP
a: RST A (A – PODSTAWA)
b: RST B (B – POTĘGA)
zero: RST 0
jeden: RST 1
dwa: RST 2
licznik: RPA
x: RPA
wynik: RPA
tmp_wynik: RPA
adres: RPA