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)