12 Zrozumieć Asembler
mioty. Na polach gry wykonujemy posunięcia i sprawdzenia, o których mówiłem już poprzednio. Zagłębienia do przechowywania przedmiotów są to po prostu wytłoczenia w planszy, w których możesz przechowywać swoje walory liczbowe mając całkowitą pewność, że nic ulegną one żadnej zmianie do momentu, kiedy je stamtąd wyciągniesz czy zmienisz w jakikolwiek sposób.
W terminologii używanej przez programistów kroki nazywane się kodem, liczby znajdujące się w zagłębieniach planszy nazywa się danymi, natomiast same zagłębienia planszy nazywa się pamięcią.
Gra Big Bux podlega tym samym regułom. Spójrz ponownie na rysunek 0.1 i zwróć uwagę, że na odgałęzieniu „Zacztynasz własny interes” znajduje się instrukcja spółka wymaga 50000 dolarów kapitału założycielskiego. Kapitał ten jest przechowywany na koncie firmy - w jednym z wielu różnych miejsc przechowywania w tej grze, a pieniądze są rodzajem danych. Taka sama jest zasada działania instrukcji w grze w Asemblera: ADD 5 do rejestru A. Instrukcja ADD (dodaj) w tym wierszu kodu zmienia wartość danych zapamiętanych w zagłębieniu planszy o nazwie Rejestr A.
Kody i dane są dwiema zupełnie różnymi rzeczami, ale współdziałają ze sobą czyniąc grę bardzo interesującą. Do kodu należą instrukcje umieszczające dane w pamięci (instrukcja MOVE - przenieś) oraz instrukcje zmieniające dane znajdujące się w pamięci INCREMENT -ZWIĘKSZ oraz DECREMENT - ZMNIEJSZ). Instrukcje kodu są panami danych, gdyż umieszczają lub zmieniają w pamięci ich wartości. Istnieją też instrukcje, których wynik działania zależy od danych. Jednym ze sprawdzań jest sprawdzanie wartości danych zawartych w pamięci (instrukcja COMPARE - PORÓWNAJ). Jeśli w pamięci znajduje się dana określonej wartości, to kod wykonuje jedną czynność. Jeśli w pamięci nie istnieje dana o tej wartości, kod może wykonywać coś innego. Mogą to być np. do wyboru instrukcje JUMP BACK (SKOCZ WSTECZ) oraz JUMP AHEAD (SKOCZ W PRZÓD).
Krótki blok instrukcji zatytułowanych PROCEDURA jest odgałęzieniem z głównego ciągu instrukcji. Do tej procedury możesz być skierowany z dowolnego miejsca programu. Po przejściu całej procedury, czyli wykonaniu wszystkich instrukcji i sprawdzeń wracasz do tego miejsca, z którego wyszedłeś (do następnej instrukcji). W postaci procedury zapisanej osobno w jednym miejscu ujmujesz zespoły czynności, które powtarzają się wielokrotnie w IWoim programie.
REJESTRY:
Przeniesienie
B
2
INSTRUKCJE
PROGRAMU:
DANE W PAMIĘCI:
0040 |
Skopiuj 0 do B |
0041 |
Skopiuj dane z B do C |
0042 |
Zwiększ B o 1 |
0043 |
Skopiuj dane z B do A |
0044 |
Odłóż licznik programu na stos |
0045 ł |
Wywołaj NaWielkie |
: :0046 |
Skopiuj dane z A do B |
0047 |
Zwiększ C o 1 |
0048 |
Porównaj C z 0 |
0049 |
Skocz z powrotem jeśli OO |
004A |
Skopiuj 5 do B |
004B |
Skopiuj dane z B do A |
004C |
Odłóż licznik programu na stos |
004D |
Wywołaj NaWielkie |
004E |
Skopiuj dane z A do B |
004F |
Dodaj 5 do A |
0050 |
itd... |
0051 |
LICZNIK
PROGRAMU:
WSKAŹNIK
STOSU:
0000 |
3 |
0001 |
1 |
0002 |
b |
0003 |
m |
0004 |
4 |
0005 |
c |
0006 |
a |
0007 |
r |
0008 |
1 |
0000
*
0000 |
00 |
0001 |
05 |
0002 | |
0003 | |
0004 | |
0005 | |
0006 |
____I |
PROCEDURA
NaWielkie
0081 |
Porównaj dane z A z 'a' |
0082 |
Skocz o 5 instrukcji jeśli dane <‘a‘ |
0083 |
Porównaj dane z A z'z1 |
0084 |
Skocz o 1 instrukcję jeśli dane >*t |
0085 |
Dodaj 32 do danych A |
0086 |
Pobierz licznik instrukcji ze stosu |
Rysunek 0.2. Gra w programowanie w Asemblerze