Maschinensprache-Kurs Teil 2
------------------------------
Diesmal werden gleich 15 neue, aber
dafür doch recht einfache Befehle vor-
gestellt.
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
--- lädt den nachfolgenden Wert oder den
Inhalt der folgenden Speicheradresse in
das X-Register.
Beispiel: LDX #$0a 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 X- bzw. Y-Regi-
sters in die angegebene speicherstelle
geschrieben.
Sie bemerken sicherlich die enge Be-
ziehung zwischen dem Akku und den Index-
registern. Für einen schnelleren Daten-
austausch zwischen diesen Registern sind
die Befehle TAX, TXA, TAY und TYA ver-
antwortlich.
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 X- bzw.
Y-Registers in den Akku geschrieben,
ohne daß sich das X- bzw. Y-Register
verändert.
DEX, DEY und DEC
---------------- Während DEX und DEY das
jeweilige Indexregister um 1 erniedrig-
en, 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 jeweili-
gen 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 Zu-
sammenstellung der neuen Befehle.
Ich wünsche Ihnen viel Erfolg beim Aus-
probieren 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)