Maschinensprache-Kurs Teil 2 ------------------------------
Diesmal werden gleich 15 neue, aber
dafür doch recht einfache Befehle vorgestellt.
Vorher müssen wir uns jedoch etwas näher
mit den Indexregistern ( X-Register und
Y-Register) beschäftigen: Jedes dieser
beiden Register kann ein Byte aufnehmen, d. h. Werte zwischen $00 und $ FF. Sie
werden hauptsächlich im Zusammenhang mit
den verschiedenen Adressierungsarten
verwendet.
LDX
Beispiel: LDX #$0 a oder LDX $1000
LDX entspricht in seiner Form dem schon
bekannten LDA-Befehl.
LDY --- ist der entsprechende Befehl für das
Y-Register.
STX/ STY ------- erinnern sehr stark an den STA-Befehl. Und so ist es auch. Bei STX bzw.
STY wird der Inhalt des Xbzw. Y-Regi- sters in die angegebene speicherstelle
geschrieben.
Sie bemerken sicherlich die enge Beziehung zwischen dem Akku und den Indexregistern. Für einen schnelleren Datenaustausch zwischen diesen Registern sind
die Befehle TAX, TXA, TAY und TYA verantwortlich.
TAX/ TAY ------- Der Inhalt des Akkus wird im
X-Register abgelegt. Dadurch verändert
sich jedoch der Inhalt des Akkumulators
nicht. Für das Y-Register lautet der
Befehl TAY.
TXA/ TYA ------- ist die Umkehrung des TAX bzw.
TAY. Nun wird der Inhalt des Xbzw.
Y-Registers in den Akku geschrieben, ohne daß sich das Xbzw. Y-Register
verändert.
DEX, DEY und DEC ---------------- Während DEX und DEY das
jeweilige Indexregister um 1 erniedrigen, wirkt der DEC-Befehl auf die nach
ihm folgende Speicherstelle. Auch von
deren Inhalt wird der Wert 1 abgezogen.
Der Akku ist dvon nicht betroffen.
INX, INY und INC ---------------- Diese Assemblerbefehle
bewirken genau das Gegenteil der eben
vorgestellten. Hier werden die jeweiligen Register um den Wert 1 erhöht.
Was passiert aber, wenn z. B. im X-Register der Wert $ FF steht und der
Prozessor auf den Befehl INX trifft ?
Da ein Byte keinen größeren Wert als $ FF
annehmen kann, wird das X-Register
kurzerhand auf $00 gesetzt. Ähnlich
sieht es bei $00 und einem DEX aus. Dann
wird einfach wieder " oben" angefangen
und $ FF gesetzt.
RTS --- steht gewöhnlich am Ende eines
Assemblerprogrammes oder Unterprogrammes
und soll künftig unser BRK ersetzen.
Wenn ein Programm auf den RTS-Befehl
trifft, wird es nicht mehr unterbrochen, sondern es wird ins Basic gesprungen.
Laden Sie nun den zum Kurs gehörende
Programm aus dem GAMESMENUE oder direkt
von der ersten Seite dieser MAGIC DISK
64- Ausgabe. Es werden Ihnen die hier
vorgestellten Befehle noch einmal
verdeutlicht.
Auf der nächsten Seite folgt eine Zusammenstellung der neuen Befehle.
Ich wünsche Ihnen viel Erfolg beim Ausprobieren der neu erlernten Befehle.
In der nächsten Ausgabe der MAGIC DISK 64 behandeln wir Vergleichsbefehle und die bedingte Verzweigung.
LDX (LoaD X-register) LDY (LoaD Y-register) STX (STore X-register) STY (STore Y-register) DEC (DECrement memory) DEX (DEcrement X-register) DEY (DEcrement Y-register) INC (INCrement memory) INX (INcrement X-register) INY (INcrement Y-register) TAX (Transfer Accu into X) TAX (Transfer Accu into Y) TXA (Transfer X into Accu) TYA (Transfer Y into Accu) RTS (ReTurn from Subroutine) ---------------------------------------- (wk)