Wykonawca: Krzysztof Sirzisko |
||||||||
Laboratorium Podstaw Informatyki |
||||||||
Temat: |
Programy w języku asemblera maszyny W |
Nr.lab.: 2 |
||||||
Rok akademicki |
termin |
Rodz. studiów |
grupa |
Data lab. |
Data oddania sprawozdania |
prowadzący |
ocena |
|
2006/2007 semestr letni |
wtorek 18-21 |
wieczorowe |
1 |
20.03 |
03.04 |
Robert Brzeski |
|
Zad 1. Odwracanie tablicy o znanej długości (ABC -> CBA).
POB N ; pobranie wielkości tablicy | SOB et1 ; skok do „et1”
ODE jeden |koniec: STOP ; stop
ŁAD N |tab: rst 1 ; (deklaracja-
petla: POB N ; dekrementacja licznika | rst 2 ; -zawartości-
ODE jeden ; | rst 3 ; -tablicy)
ŁAD N ; | rst 4 ;
SOM et1 ; skok przy ujemnej do „et1” | rst 5 ;
POB et2 ; pobranie etykiety „et2” | rst 6 ;
DOD jeden ; inkrementacja „et2” | rst 7 ;
ŁAD et2 | rst 8 ;
POB et4 ; pobranie etykiety „et2” | rst 9 ;
DOD jeden ; inkrementacja „et2” |N: rst 9 ; wielkość tablicy
ŁAD et4 |jeden: rst 1 ; deklaracja stałej
SOB petla ; skok do „petla” |tmp: rpa ; (rezerwacja-
| ; -komórki pamięci)
et1: POB tab |_________________________________
ŁAD tmp
et2: POB tab
et3: ŁAD tab
POB tmp
et4: ŁAD tab
POB et1 ; inkrementacja etykiety „et1”
DOD jeden ;
ŁAD et1 ;
POB et3 ; inkrementacja etykiety „et3”
DOD jeden ;
ŁAD et3 ;
POB et2 ; dekrementacja etykiety „et2”
ODE jeden ;
ŁAD et2 ;
POB et4 ; dekrementacja etykiety „et4”
ODE jeden ;
ŁAD et4 ;
POB et4 ; pobranie etykiety „et4” i odjęcie „et3” w celu sprawdzenia
ODE et3 ; czy dokonały się wszystkie zamiany w tablicy
SOM koniec ; skok przy ujemnej do „koniec”
Zad 2. Potęgowanie z wykorzystaniem podprogramu mnożenia.
POB podstawa
ŁAD wykładnik
POB wykładnik ; zmniejszenie wykładnika (licznika)
ODE jeden ;
ŁAD wykładnik ;
petla: POB wykładnik ; pobieranie i dekrementacja licznika
ODE jeden ;
ŁAD wykładnik ;
SOM koniec ; skok przy ujemnej do „konie”
PSH podstawa ; zmienne na stos
PSH wynik ;
SDP mnożenie ; podprogram mnożenia
POP wynik ; pobranie wyniku
SOB petla ; skok do „petla”
koniec: STOP
podstawa: rst 2 ; deklaracja stałych
wykładnik: rst 10 ;
wynik: rpa ; rezerwacja komórki pamięci
mnożenie: POP adres ; pobranie adresu
POP x ; ściągnięcie zmiennych ze stosu
POP y ;
POB zero ; zerowanie sumy
ŁAD suma ;
wymnoz: POB y ; dodawanie x do sumy y-razy
ODE jeden ;
ŁAD y ;
SOM mnoz_kon ; skok przy ujemnej do „mnoz_kon”
POB suma
DOD x
ŁAD suma
SOB wymnoz ; skok do „wymnoz”
mnoz_kon: PSH suma ; suma na stos
PSH adres ; adres na stos
PWR ; powrót z podprogramu
jeden: rst 1 ; deklaracje stałych
zero: rst 0 ;
suma: rpa ; rezerwacje komórek pamięci
adres: rpa ;
x: rpa ;
y: rpa ;