58
4. Program ćwiczeń
Ćwiczenie obejmuje zapoznanie się z językiem prostego asemblera maszyny cyfrowej W i zreaJizowanie kilku prostych programów w oparciu o zadaną listę rozkazów.
4.3.1. Przykład - mnożenie liczb nieujemnych
Napisać program mnożenia dwu nieujemnych liczb zapisanych w odpowiednich komórkach pamięci, wskazywanych przez etykiety Mna i Mnk. Wynik mnożenia ma zostać zapisany w komórce pamięci wskazywanej przez etykietę Wyn.
W liście rozkazów maszyny W brak jakiegokolwiek rozkazu mnożenia, dlatego też zadanie należy zrealizować w formie programu. Operację mnożenia mnożnej i mnożnika można zastąpić przez wielokrotne dodawanie mnożnika. Dodawanie to należy wykonać tyle razy. ile wynosi wartość mnożnej. Schemat blokowy rozwiązania zadania zawiera rys. 4.1.
Na początku należy wyzerować zawartość komórki Wyn. przechowującej wynik wykonania programu. Następnie sprawdzić, czy mamy do czynienia ze szczególnym przypadkiem mnożenia przez zero. Gdyby tak było, to ponieważ komórka Wyn została wcześniej wyzerowana, a więc zawiera właściwy wynik, można zakończyć wykonanie programu. W każdym innym przypadku należy Mna razy wykonać wnętrze pętli. W pętli tej powinny zostać wykonane następujące operacje: dodanie do aktualnej zawartości komórki Wyn zawartości komórki Mnk oraz dekrementacja zmiennej Mna pełniącej rolę licznika pętli. Możemy teraz podać treść pliku z tekstem programu w języku symbolicznym:
{ TEST2.PTX - Mnożenie dwóch liczb dodatnich. Ola ujemnych lub zera zwraca zero }
POB StO |
{ Wyzeruj wynik } | |
LAD Wyn |
{ Wpisz wynik częściowy } | |
POB Mnk |
{ Pobierz mnożnik } | |
SOM Stop |
{ Koniec gdy ujemny } | |
Pętla: |
POB Mna |
{ Pobierz mnożną } |
ODE St1 |
{ Zmniejsz o jeden } | |
SOM Stop |
{ Koniec gdy zero lub ujemna } | |
LAD Mna |
{ Zapisz licznik krotności operacji dodawanie } | |
POB Wyn |
{ Pobierz częściowy wynik } | |
DOD Mnk |
{ Wykonaj kolejne dodawanie } | |
LAD Wyn |
{ Zapisz wynik częściowy } | |
SOB Pętla |
{ Wykonaj kolojne dodawanie } | |
Stop: |
SOB Stop |
{ Zakończ wykonanie ) |
Wyn: |
RPA |
{ Wynik mnożenia } |
Mnk: |
RST 6d |
{ Mnożnik } |
Mna: |
RST 5d |
{ Mnożna } |
St1: |
RST 1d | |
StO: |
RST Od KON |
4.3. Maszyna W - symulator. Proste programy
59
Rys. 4.1. Schemat blokowy programu mnożenia dwu liczb
Ćwiczenie to dotyczy architektury maszyny EW. Studenci zapoznają się przede wszystkim z rozszerzeniami w stosunku do maszyny W, a następnie realizują kilka zadań na symulatorze maszyny F.W. Ćwiczenie ma również na celu przedstawienie mechanizmów związanych z wywoływaniem procedur.
4.4.1. Przykład - obliczanie wyrazów ciągu Fibonacciego
Napisać program obliczający N-ty wyraz ciągu Fibonacciego danego wzorem rekurencyjnym: FB - Fvl + Fn.2 z warunkami początkowymi F0 = 0 i F, — 1. Obliczenia zrealizować za pomocą odpowiedniej procedury' rekurencyjncj. Przyjąć, że dostępna jest struktura zwana stosem, na szczyt którego wskazuje zawartość rejestru X. Wykorzystać stos do zapamiętywania śladu powrotu z procedury.
Realizacja tego zadania składa się z dwóch części. Pierwsza dotyczy zdefiniowania dodatkowych rozkazów skoku do procedury i powrotu z procedury oraz rozkazów zapisu na