Mnemonics

weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

Die Befehle des 6510

Diese Seite dient zum Nachschlagen der MnemonicshelpErklärungSo werden die Assemblerbefehle genannt., diese wird mit dem Fortschritt der Assembler-Grundlagen Stück für Stück erweitert.

Hier gibt es häufiger TooltippsZusätzliche Hinweise findet ihr in den Tooltipps., die euch zusätzliche Informationen geben, wenn ihr mit der Maus drüberfahrt.

Für den schnellen Blick zwischendurch gibt es auch eine Quickview.

Hier direkte Links zu den Tabellen auf dieser Seite:

 

Liste der Mnemonics

  • Mnemonic: Das lesbare Befehlskürzel für die OpCodes.
  • Beschreibung: Kurze Infos, was der Befehl genau macht.
  • OpCode: BYTE das den Befehl eindeutig identifiziert. Der Link führt zur Stelle mit einer ausführlichen Erklärung.
  • Adressierung / Info: Hinweis wie der Befehl verwendet wird.
  • Takzyklen: Die Befehle benötigen unterschiedlich viel Zeit, um von der CPU ausgeführt zu werden. Diese Zeit wird in Taktzyklen angegeben. Da unser 6510 mit ca. 1MHz läuft beträgt die Zeit für einen Taktzyklus auf einem PAL-Rechner 1Sek. / 985248 = 1,015µs (bei NTSC 0,978µs). Wir können uns also einfach merken, dass ein Takt ca. eine millionstel Sekunde (1µs) lang ist.
  • Bytes: Speicherbedarf des Befehls. Je nach Befehl und Adressierung wird unterschiedlich viel Speicher benötigt.
  • NV-BDIZC: Welche Flags werden vom Befehl beeinflusst.
    Negativ, oVerflow, – (immer 1), Break, Decimal, Interrupt, Zero und Carry

Mit den Angaben der benötigten BYTES und der Takzyklen (Spalte TZ), könnt ihr also schon ‚auf dem Papier‚ ermitteln, wie groß euer Programm ist und wie viel Zeit einzelne Teile (oder auch das ganze Programm) brauchen, um verarbeitet zu werden.

 

Ladebefehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
LDAhelpLoaD Akkumulator #$3AAkkumulator direkt ladenunmittelbarhelpEinen festen Wert direkt in den Akku schreiben.

2

2

N Z
LDA $082DAkkumulator absolut ladenabsoluthelpEinen Wert von der angegebenen Adresse in den Akku laden.

3

4

N Z
LDA $082D,XAkkumulator absolut mit X ladenabsolut X-indizierthelpEinen Wert von (angegebene Adresse + X-Register) in den Akku laden.

3

4-5helpBeim Überschreiten der Page-Grenze werden 5 Taktzyklen benötigt, sonst 4.

N Z
LDA $082D,YAkkumulator absolut mit Y ladenabsolut Y-indizierthelpEinen Wert von (angegebene Adresse + Y-Register) in den Akku laden.

3

4-5helpBeim Überschreiten der Page-Grenze werden 5 Taktzyklen benötigt, sonst 4.

N Z
LDA $FBAkkumulator von Zero-Page ladenZero-PagehelpEinen Wert von der angegebenen Zero-Page Adresse in den Akku laden.

2

3

N Z
LDA $FB,XAkkumulator von Zero-Page mit X ladenZero-Page X-indizierthelpEinen Wert von (angegebener Zero-Page Adresse + X-Register) in den Akku laden.

2

4

N Z
LDA ($FB,X)Akkumulator indirekt mit X-indiziert ladenindirekt X-indizierthelpEinen Wert von der Adresse, die an der (angegebener Zero-Page Adresse + X-Register) steht, in den Akku laden.

2

6

N Z
LDA ($FB),YAkkumulator indirekt mit Y-nach-indiziert ladenindirekt Y-nach-indizierthelpEinen Wert von (der Adresse die an der angegebener Zero-Page Adresse steht) + Y-Register in den Akku laden.

2

5-6helpBeim Überschreiten der Page-Grenze werden 6 Taktzyklen benötigt, sonst 5.
N Z
LDXhelpLoaD X-Register (Indexregister-X) #$3AX-Register direkt ladenunmittelbarhelpEinen festen Wert direkt in das X-Register schreiben.

2

2

N Z
LDX $082DX-Register absolut ladenabsoluthelpWert von der angegebenen Adresse in das X-Register schreiben.

3

4

N Z
LDX $082D,YX-Register absolut Y-indiziert ladenabsolut Y-indizierthelpWert von der angegebenen Adresse+Y-Register in das X-Register schreiben.

3

4-5helpBeim Überschreiten der Page-Grenze werden 5 Taktzyklen benötigt, sonst 4.

N Z
LDX $FBX-Register von der Zero-Page ladenZero-PagehelpWert von der angegebenen Zero-Page-Adresse in das X-Register schreiben.

2

3

N Z
LDX $FB,YX-Register von Zero-Page Y-indiziert ladenZero-Page Y-indizierthelpWert von der angegebenen Zero-Page-Adresse+Y-Register in das X-Register schreiben.

2

4

N Z
LDYhelpLoaD Y-Register (Indexregister-Y) #$3AY-Register direkt ladenunmittelbarhelpEinen festen Wert direkt ins Y-Register schreiben.

2

2

N Z
LDY $082DY-Register absolut ladenabsoluthelpWert von der angegebenen Adresse in das Y-Register schreiben.

3

4

N Z
LDY $082D,XY-Register absolut X-indiziert ladenabsolut X-indizierthelpWert von der angegebenen Adresse+X-Register in das Y-Register schreiben.

3

4-5helpBeim Überschreiten der Page-Grenze werden 5 Taktzyklen benötigt, sonst 4.

N Z
LDY $FBY-Register von der Zero-Page ladenZero-PagehelpWert von der angegebenen Zero-Page-Adresse in das Y-Register schreiben.

2

3

N Z
LDY $FB,XY-Register von Zero-Page X-indiziert ladenZero-Page X-indizierthelpWert von der angegebenen Zero-Page-Adresse+X-Register in das Y-Register schreiben.

2

4

N Z

 

Speicherbefehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
STAhelpSTore Akkumulator $082DAkkumulator an absoluter Adresse speichernabsoluthelpDen Inhalt des Akkus in der angegebenen Speicherstelle speichern.
3
4
STA $03FF,XAkkumulator absolut mit X speichernabsolut, XhelpDen Inhalt des Akkus in der angegebenen Speicherstelle unter hinzunahme des X-Registers speichern.
3
5
STA $03FF,YAkkumulator absolut mit Y speichernabsolut, YhelpDen Inhalt des Akkus in der angegebenen Speicherstelle unter hinzunahme des Y-Registers speichern.
3
5
STA $FBAkkumulator auf der Zero-Page speichernZero-PagehelpDen Inhalt des Akkus in der angegebenen Speicherstelle der Zero-Page speichern.
2
3
STA $FB,XAkkumulator auf der Zero-Page mit X speichernZero-Page, XhelpDen Inhalt des Akkus in der angegebenen Speicherstelle der Zero-Page-Adresse plus X-Register speichern.
2
4
STA ($FB,X)Akkumulator indirekt x-indiziert speichernindirekt X-indizierthelpDen Akku an der Adresse speichern, die an der (angegebener Zero-Page Adresse + X-Register) steht.
2
4
STA ($FB),YAkku indirekt Y-nach-indiziert speichernindirekt Y-nach-indizierthelpDen Inhalt des Akkus in der Adresse (die sich an der angegebenen Zero-Page-Adresse befindet)+Y-Register speichern.
2
6
STXhelpSTore X-Register $082DX-Register an absoluter Adresse speichernabsoluthelpDen Inhalt des X-Register an der angegebenen Speicherstelle speichern.
3
4
STX $FBX-Register auf der Zero-Page speichernZero-PagehelpDen Inhalt des X-Registers in der angegebenen Speicherstelle der Zero-Page speichern.
2
3
STX $FB,YX-Register auf der Zero-Page mit Y speichernZero-Page, YhelpDen Inhalt des X-Registers in der angegebenen Speicherstelle der Zero-Page-Adresse plus Y-Register speichern.
2
4
STYhelpSTore Y-Register $082DY-Register an absoluter Adresse speichernabsoluthelpDen Inhalt des Y-Register an der angegebenen Speicherstelle speichern.
3
4
STY $FBY-Register auf der Zero-Page speichernZero-PagehelpDen Inhalt des Y-Registers in der angegebenen Speicherstelle der Zero-Page speichern.
2
3
STY $FB,XY-Register auf der Zero-Page mit X speichernZero-Page, XhelpDen Inhalt des Y-Registers in der angegebenen Speicherstelle der Zero-Page-Adresse plus X-Register speichern.
2
4

 

Transferbefehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
TAXhelpTransfer Akku to X-RegisterAkku ins X-Register kopierenimplizithelpDen Inhalt des Akkumulator in das X-Register kopieren.
1
2
N Z
TXAhelpTransfer X-Register to AkkuX-Register in den Akku kopierenimplizithelpDen Inhalt des X-Registers in den Akkumulator kopieren.
1
2
N Z
TAYhelpTransfer Akku to Y-RegisterAkku ins Y-Register kopierenimplizithelpDen Inhalt des Akkumulator in das Y-Register kopieren.
1
2
N Z
TYAhelpTransfer Y-Register to AkkuY-Register in den Akku kopierenimplizithelpDen Inhalt des Y-Registers in den Akkumulator kopieren.
1
2
N Z
TSXhelpTransfer SP to X-RegisterStackpointer ins X-Register kopierenimplizithelpDen Inhalt des Stackpointers (SP) in das X-Register kopieren.
1
2
N Z
TXShelpTransfer X-Register to SPX-Register in den Stackpointer kopierenimplizithelpDen Inhalt des X-Registers in den Stackpointer (SP) kopieren.
1
2

 

Rechenbefehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
ADChelpADd with Carry #$3BAddiere zu Akku...unmittelbarhelpDen angegebenen Wert zum Akku hinzuaddieren.

2

2
N V Z C
ADC $082EAddiere zu Akku...absoluthelpDen Wert an der angegebenen absoluten Adresse zum Akku hinzuaddieren.

3

4
N V Z C
ADC $082E,XAddiere zu Akku...absolut X-indizierthelpDen Wert an der angegebenen Adresse + X-Register zum Akku hinzuaddieren.

3

N V Z C
ADC $082E,YAddiere zu Akku...absolut X-indizierthelpDen Wert an der angegebenen Adresse + Y-Register zum Akku hinzuaddieren.

3

N V Z C
ADC $FBAddiere zu Akku...Zero-PagehelpDen Wert an der angegebenen Zero-Page-Adresse zum Akku hinzuaddieren.

2

3
N V Z C
ADC $FB,XAddiere zu Akku...Zero-Page X-indizierthelpDen Wert an der angegebenen Zero-Page-Adresse + X-Register zum Akku hinzuaddieren.

2

4
N V Z C
ADC ($FB,X)Addiere zu Akku...indirekt X-indizierthelpDen Wert, der Adresse, an der angegebenen Zero-Page-Adresse + X-Register, zu finden ist, zum Akku hinzuaddieren.

2

6
N V Z C
ADC ($FB),YAddiere zu Akku...indirekt Y-nach-indizierthelpDen Wert, der an der Adresse, die an der angegebenen Zero-Page-Adresse liegt, zzgl. Y-Register zu finden ist, zum Akku hinzuaddieren.

2

N V Z C
SBChelpSuB with Carry #$3BSubtrahiere vom Akku...unmittelbarhelpDen angegebenen Wert vom Akku subtrahieren.

2

2
N V Z C
SBC $082ESubtrahiere vom Akku...absoluthelpDen Wert an der angegebenen absoluten Adresse vom Akku subtrahieren.

3

4
N V Z C
SBC $082E,XSubtrahiere vom Akku...absolut X-indizierthelpDen Wert an der angegebenen Adresse + X-Register vom Akku subtrahieren.

3

N V Z C
SBC $082E,YSubtrahiere vom Akku...absolut X-indizierthelpDen Wert an der angegebenen Adresse + Y-Register vom Akku subtrahieren.

3

N V Z C
SBC $FBSubtrahiere vom Akku...Zero-PagehelpDen Wert an der angegebenen Zero-Page-Adresse vom Akku subtrahieren.

2

3
N V Z C
SBC $FB,XSubtrahiere vom Akku...Zero-Page X-indizierthelpDen Wert an der angegebenen Zero-Page-Adresse + X-Register vom Akku subtrahieren.

2

4
N V Z C
SBC ($FB,X)Subtrahiere vom Akku...indirekt X-indizierthelpDen Wert, der Adresse, an der angegebenen Zero-Page-Adresse + X-Register, zu finden ist, vom Akku subtrahieren.

2

6
N V Z C
SBC ($FB),YSubtrahiere vom Akku...indirekt Y-nach-indizierthelpDen Wert, der an der Adresse, die an der angegebenen Zero-Page-Adresse liegt, zzgl. Y-Register zu finden ist, vom Akku subtrahieren.

2

N V Z C
DEChelpDECrement $082Dabsolute Speicherstelle verringernabsoluthelpDen Inhalt der angegebenen Adresse um 1 verringern.

3

6
N Z
DEC $082D,Xabsolute Adresse, X-indiziert verringernabsolut, XhelpDen Inhalt (der angegebenen Adresse+X-Register) um 1 verringern.

3

7
N Z
DEC $FBZero-Page-Speicherstelle verringernZero-PagehelpDen Inhalt der angegebenen Zero-Page-Adresse um 1 verringern.

2

5
N Z
DEC $FB,XZero-Page X-indiziert verringernZero-Page, XhelpDen Inhalt (der angegebenen Zero-Page-Adresse+X-Register) um 1 verringern.

2

6
N Z
DEXhelpDEcrement X-RegisterX-Register verringernimplizithelpDen Inhalt des X-Registers um 1 verringern.

1

2
N Z
DEYhelpDEcrement Y-RegisterY-Register verringernimplizithelpDen Inhalt des Y-Registers um 1 verringern.

1

2
N Z
INChelpINCrement $082Dabsolute Speicherstelle erhöhenabsoluthelpDen Inhalt der angegebenen Adresse um 1 erhöhen.

3

6
N Z
INC $082D,Xabsolute Adresse, X-indiziert erhöhenabsolut, XhelpDen Inhalt (der angegebenen Adresse+X-Register) um 1 erhöhen.

3

7
N Z
INC $FBZero-Page-Speicherstelle erhöhenZero-PagehelpDen Inhalt der angegebenen Zero-Page-Adresse um 1 erhöhen.

2

5
N Z
INC $FB,XZero-Page X-indiziert erhöhenZero-Page, XhelpDen Inhalt (der angegebenen Zero-Page-Adresse+X-Register) um 1 erhöhen.

2

6
N Z
INXhelpINcrement X-RegisterX-Register erhöhenimplizithelpDen Inhalt des X-Registers um 1 erhöhen.

1

2
N Z
INYhelpINcrement Y-RegisterY-Register erhöhenimplizithelpDen Inhalt des Y-Registers um 1 erhöhen.

1

2
N Z

 

Rotations- / Verschiebebefehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
ASLhelpArithmetic Shift LeftDen Akku-Inhalt bitweise nach links verschieben.AkkuhelpVerschiebt den Akku-Inhalt bitweise nach links. Von rechts wird mit einer Null aufgefüllt, das links herausfallende Bit landet im Carry-Flag.
1
2
N Z C
ASL $082DDen Inhalt des Bytes an der absoluten Adresse bitweise nach links verschieben.absoluthelpVerschiebt das Byte an der absoluten Adresse bitweise nach links. Von rechts wird mit einer Null aufgefüllt, das links herausfallende Bit landet im Carry-Flag.
3
6
N Z C
ASL $082D,XDen Inhalt des Bytes an der absoluten Adresse + X bitweise nach links verschieben.absolut X-indizierthelpVerschiebt das Byte an der absoluten Adresse + X bitweise nach links. Von rechts wird mit einer Null aufgefüllt, das links herausfallende Bit landet im Carry-Flag.
3
7
N Z C
ASL $FBDen Inhalt des Bytes an der Zero-Page-Adresse bitweise nach links verschieben.Zero-PagehelpVerschiebt das Byte an der Zero-Page-Adresse bitweise nach links. Von rechts wird mit einer Null aufgefüllt, das links herausfallende Bit landet im Carry-Flag.
2
5
N Z C
ASL $FB,XDen Inhalt des Bytes an der Zero-Page-Adresse + X bitweise nach links verschieben.Zero-Page X-indizierthelpVerschiebt das Byte an der Zero-Page-Adresse + X bitweise nach links. Von rechts wird mit einer Null aufgefüllt, das links herausfallende Bit landet im Carry-Flag.
2
6
N Z C
LSRhelpLogical Shift RightDen Akku-Inhalt bitweise nach rechts verschieben.AkkuhelpVerschiebt den Akku-Inhalt bitweise nach rechts. Von links wird mit einer Null aufgefüllt, das rechts herausfallende Bit landet im Carry-Flag.
1
2
N Z C
LSR $082DDen Inhalt des Bytes an der absoluten Adresse bitweise nach rechts verschieben.absoluthelpVerschiebt das Byte an der absoluten Adresse bitweise nach rechts. Von links wird mit einer Null aufgefüllt, das rechts herausfallende Bit landet im Carry-Flag.
3
6
N Z C
LSR $082D,XDen Inhalt des Bytes an der absoluten Adresse + X bitweise nach rechts verschieben.absolut X-indizierthelpVerschiebt das Byte an der absoluten Adresse + X bitweise nach rechts. Von links wird mit einer Null aufgefüllt, das rechts herausfallende Bit landet im Carry-Flag.
3
7
N Z C
LSR $FBDen Inhalt des Bytes an der Zero-Page-Adresse bitweise nach rechts verschieben.Zero-PagehelpVerschiebt das Byte an der Zero-Page-Adresse bitweise nach rechts. Von links wird mit einer Null aufgefüllt, das rechts herausfallende Bit landet im Carry-Flag.
2
5
N Z C
LSR $FB,XDen Inhalt des Bytes an der Zero-Page-Adresse + X bitweise nach rechts verschieben.Zero-Page X-indizierthelpVerschiebt das Byte an der Zero-Page-Adresse + X bitweise nach rechts. Von links wird mit einer Null aufgefüllt, das rechts herausfallende Bit landet im Carry-Flag.
2
6
N Z C
ROLhelpROtate LeftDen Akku-Inhalt bitweise nach links verschieben, von rechts wird das Carry-Flag eingeschoben.AkkuhelpROLVerschiebt den Akku-Inhalt bitweise nach links. Von rechts wird mit dem Carry-Flag aufgefüllt, das links herausfallende Bit landet zum Schluß wieder im Carry-Flag.
1
2
N Z C
ROL $082DDen Inhalt des Bytes an der absoluten Adresse bitweise nach links verschieben, von rechts das C-Flag einschieben.AkkuhelpROLBitweises verschieben nach links. Von rechts wird mit dem Carry-Flag aufgefüllt, das links herausfallende Bit landet zum Schluß wieder im Carry-Flag.
3
6
N Z C
ROL $082D,XDen Inhalt des Bytes an der absoluten Adresse+X bitweise nach links verschieben und von rechts das C-Flag einschieben.AkkuhelpROLBitweises verschieben nach links. Von rechts wird mit dem Carry-Flag aufgefüllt, das links herausfallende Bit landet zum Schluß wieder im Carry-Flag.
3
7
N Z C
ROL $FBDen Inhalt des Bytes an der Zero-Page-Adresse bitweise nach links verschieben und von rechts das Carry-Flag einschieben.AkkuhelpROLBitweises verschieben nach links. Von rechts wird mit dem Carry-Flag aufgefüllt, das links herausfallende Bit landet zum Schluß wieder im Carry-Flag.
2
5
N Z C
ROL $FB,XDen Inhalt des Bytes an der Zero-Page-Adresse+X bitweise nach links verschieben und das C-Flag von rechts einschieben.AkkuhelpROLBitweises verschieben nach links. Von rechts wird mit dem Carry-Flag aufgefüllt, das links herausfallende Bit landet zum Schluß wieder im Carry-Flag.
2
6
N Z C
RORhelpROtate RightDen Akku-Inhalt bitweise nach rechts verschieben und das Carry-Flag von links einschieben.AkkuhelpVerschiebt den Akku-Inhalt bitweise nach rechts. Von links wird mit dem Carry-Flag aufgefüllt, das rechts herausfallende Bit landet zum Schluß wieder im Carry-Flag.
1
2
N Z C
ROR $082DDen Inhalt des Bytes an der absoluten Adresse bitweise nach rechts verschieben und das Carry-Flag von links einschieben.AkkuhelpRORBitweises verschieben nach rechts. Von links wird mit dem Carry-Flag aufgefüllt, das rechts herausfallende Bit landet zum Schluß wieder im Carry-Flag.
3
6
N Z C
ROR $082D,XDen Inhalt des Bytes an der absoluten Adresse+X bitweise nach rechts verschieben, von links das C-Flag einschieben.AkkuhelpRORBitweises verschieben nach rechts. Von links wird mit dem Carry-Flag aufgefüllt, das rechts herausfallende Bit landet zum Schluß wieder im Carry-Flag.
3
7
N Z C
ROR $FBDen Inhalt des Bytes an der Zero-Page-Adresse bitweise nach rechts verschieben und von links das Carry-Flag einschieben.AkkuhelpRORBitweises verschieben nach rechts. Von links wird mit dem Carry-Flag aufgefüllt, das rechts herausfallende Bit landet zum Schluß wieder im Carry-Flag.
2
5
N Z C
ROR $FB,XDen Inhalt des Bytes an der Zero-Page-Adresse+X bitweise nach rechts verschieben, das C-Flag von links einschieben.AkkuhelpRORBitweises verschieben nach rechts. Von links wird mit dem Carry-Flag aufgefüllt, das rechts herausfallende Bit landet zum Schluß wieder im Carry-Flag.
2
6
N Z C

 

Boolschebefehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
ANDhelpAND bitweise UND-Verknüpfung #$3Adirekt bitweises UND mit dem AkkudirekthelpDen Inhalt des Akkus mit dem angegebenen Wert bitweise Verknüpfen und das Ergebnis im Akku ablegen.
2
2
N Z
AND $083Abitweises UND mit der absoluten Adresse und dem AkkuabsoluthelpDen Inhalt des Akkus mit dem Byte an der angegebenen Adresse bitweise UND-Verknüpfen und das Ergebnis im Akku ablegen.
3
4
N Z
AND $083A,Xbitweises UND mit der absoluten Adresse+X und dem Akkuabsolut, XhelpDen Inhalt des Akkus mit dem Byte an der angegebenen Adresse+X-Register bitweise UND-Verknüpfen und das Ergebnis im Akku ablegen.
3
N Z
AND $083A,Ybitweises UND mit der absoluten Adresse+Y und dem Akkuabsolut, YhelpDen Inhalt des Akkus mit dem Byte an der angegebenen Adresse+Y-Register bitweise UND-Verknüpfen und das Ergebnis im Akku ablegen.
3
N Z
AND $FBbitweises UND mit der Zero-Page-Adresse und dem AkkuZero-PagehelpDen Inhalt des Akkus mit dem Byte an der angegebenen Zero-Page-Adresse bitweise UND-Verknüpfen und das Ergebnis im Akku ablegen.
2
3
N Z
AND $FB,Xbitweises UND mit der Zero-Page-Adresse+X und dem AkkuZero-Page, XhelpDen Inhalt des Akkus mit dem Byte an (der angegebenen Zero-Page-Adresse + X-Register) bitweise UND-Verknüpfen und das Ergebnis im Akku ablegen.
2
4
N Z
AND ($FB,X)bitweises UND mit der indirekt+X-Adresse und dem Akkuindirekt, X-indizierthelpDen Inhalt des Akkus mit dem Byte, das an der Adresse (angegebenen Zero-Page-Adresse + X-Register) liegt, bitweise UND-Verknüpfen und das Ergebnis im Akku ablegen.
2
6
N Z
AND ($FB),Ybitweises UND mit der indirekt-Y-nach-indizierten-Adresse und dem Akkuindirekt, Y-nach-indizierthelpDen Inhalt des Akkus mit dem Byte, das an (der Adresse die an (der angegebenen Zero-Page-Adresse zufinden ist) + Y-Register) liegt, bitweise UND-Verknüpfen und das Ergebnis im Akku ablegen.
2
N Z
EORhelpExclusive OR bitweise EXKLUSIV ODER-Verknüpfung #$3Adirekt bitweises EXKLUSIV ODER mit dem AkkudirekthelpDen Inhalt des Akkus mit dem angegebenen Wert bitweise Verknüpfen und das Ergebnis im Akku ablegen.
2
2
N Z
EOR $083Abitweises EXKLUSIV ODER mit der absoluten Adresse und dem AkkuabsoluthelpDen Inhalt des Akkus mit dem Byte an der angegebenen Adresse bitweise EXCLUSIV-ODER-Verknüpfen und das Ergebnis im Akku ablegen.
3
4
N Z
EOR $083A,Xbitweises EXKLUSIV ODER mit der absoluten Adresse+X und dem Akkuabsolut, XhelpDen Inhalt des Akkus mit dem Byte an der angegebenen Adresse+X-Register bitweise EXKLUSIV-ODER-Verknüpfen und das Ergebnis im Akku ablegen.
3
N Z
EOR $083A,Ybitweises EXKLUSIV ODER mit der absoluten Adresse+Y und dem Akkuabsolut, YhelpDen Inhalt des Akkus mit dem Byte an der angegebenen Adresse+Y-Register bitweise EXKLUSIV-ODER-Verknüpfen und das Ergebnis im Akku ablegen.
3
N Z
EOR $FBbitweises EXKLUSIV ODER mit der Zero-Page-Adresse und dem AkkuZero-PagehelpDen Inhalt des Akkus mit dem Byte an der angegebenen Zero-Page-Adresse bitweise EXKLUSIV-ODER-Verknüpfen und das Ergebnis im Akku ablegen.
2
3
N Z
EOR $FB,Xbitweises EXKLUSIV ODER mit der Zero-Page-Adresse+X und dem AkkuZero-Page, XhelpDen Inhalt des Akkus mit dem Byte an (der angegebenen Zero-Page-Adresse + X-Register) bitweise EXKLUSIV-ODER-Verknüpfen und das Ergebnis im Akku ablegen.
2
4
N Z
EOR ($FB,X)bitweises EXKLUSIV ODER mit der indirekt+X-Adresse und dem Akkuindirekt, X-indizierthelpDen Inhalt des Akkus mit dem Byte, das an der Adresse (angegebenen Zero-Page-Adresse + X-Register) liegt, bitweise EXKLUSIV-ODER-Verknüpfen und das Ergebnis im Akku ablegen.
2
6
N Z
EOR ($FB),Ybitweises EXKLUSIV ODER mit der indirekt-Y-nach-indizierten-Adresse und dem Akkuindirekt, Y-nach-indizierthelpDen Inhalt des Akkus mit dem Byte, das an (der Adresse die an (der angegebenen Zero-Page-Adresse zufinden ist) + Y-Register) liegt, bitweise EXKLUSIV-ODER-Verknüpfen und das Ergebnis im Akku ablegen.
2
N Z
ORAhelpOR with Akku bitweise ODER-Verknüpfung mit dem Akku #$3Adirekt bitweises ODER mit dem AkkudirekthelpDen Inhalt des Akkus mit dem angegebenen Wert bitweise Verknüpfen und das Ergebnis im Akku ablegen.
2
2
N Z
ORA $083Abitweises ODER mit der absoluten Adresse und dem AkkuabsoluthelpDen Inhalt des Akkus mit dem Byte an der angegebenen Adresse bitweise ODER-Verknüpfen und das Ergebnis im Akku ablegen.
3
4
N Z
ORA $083A,Xbitweises ODER mit der absoluten Adresse+X und dem Akkuabsolut, XhelpDen Inhalt des Akkus mit dem Byte an der angegebenen Adresse+X-Register bitweise ODER-Verknüpfen und das Ergebnis im Akku ablegen.
3
N Z
ORA $083A,Ybitweises ODER mit der absoluten Adresse+Y und dem Akkuabsolut, YhelpDen Inhalt des Akkus mit dem Byte an der angegebenen Adresse+Y-Register bitweise ODER-Verknüpfen und das Ergebnis im Akku ablegen.
3
N Z
ORA $FBbitweises ODER mit der Zero-Page-Adresse und dem AkkuZero-PagehelpDen Inhalt des Akkus mit dem Byte an der angegebenen Zero-Page-Adresse bitweise ODER-Verknüpfen und das Ergebnis im Akku ablegen.
2
3
N Z
ORA $FB,Xbitweises ODER mit der Zero-Page-Adresse+X und dem AkkuZero-Page, XhelpDen Inhalt des Akkus mit dem Byte an (der angegebenen Zero-Page-Adresse + X-Register) bitweise ODER-Verknüpfen und das Ergebnis im Akku ablegen.
2
4
N Z
ORA ($FB,X)bitweises ODER mit der indirekt+X-Adresse und dem Akkuindirekt, X-indizierthelpDen Inhalt des Akkus mit dem Byte, das an der Adresse (angegebenen Zero-Page-Adresse + X-Register) liegt, bitweise ODER-Verknüpfen und das Ergebnis im Akku ablegen.
2
6
N Z
ORA ($FB),Ybitweises ODER mit der indirekt-Y-nach-indizierten-Adresse und dem Akkuindirekt, Y-nach-indizierthelpDen Inhalt des Akkus mit dem Byte, das an (der Adresse die an (der angegebenen Zero-Page-Adresse zufinden ist) + Y-Register) liegt, bitweise ODER-Verknüpfen und das Ergebnis im Akku ablegen.
2
N Z

 

Vergleichsbefehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
BIThelpBIT test $0821bitweises UND zwischen Akku und der absoluten AdresseabsoluthelpDen Wert im Akku und an der angegebenen Adresse bitweise UND-Verknüpfen. OHNE ein Ergebnis zu speichern, es werden nur die Flags gesetzt!
3
4
N V Z
BIT $FBbitweises UND zwischen Akku und der Zero-Page-AdresseZero-PagehelpDen Wert im Akku und an der angegebenen Zero-Page-Adresse bitweise UND-Verknüpfen. OHNE ein Ergebnis zu speichern, es werden nur die Flags gesetzt!
2
3
N V Z
CMPhelpCoMPare #$3CVergleiche Akku mit...unmittelbarhelpDen Akku mit dem angegebenen Wert vergleichen!
2
2
N Z C
CMP $0821Vergleiche Akku mit...absoluthelpDen Akku mit dem an der absoluten Adresse befindlichen Wert vergleichen!
3
4
N Z C
CMP $0821,XVergleiche Akku mit...absolut X-indizierthelpDen Akku mit dem an der absoluten Adresse + X-Register befindlichen Wert vergleichen!
3
N Z C
CMP $0821,YVergleiche Akku mit...absolut Y-indizierthelpDen Akku mit dem an der absoluten Adresse + Y-Register befindlichen Wert vergleichen!
3
N Z C
CMP $FBVergleiche Akku mit...Zero-PagehelpDen Akku mit dem an der Zero-Page-Adresse befindlichen Wert vergleichen!
2
3
N Z C
CMP $FB,XVergleiche Akku mit...Zero-Page X-indizierthelpDen Akku mit dem an der Zero-Page-Adresse + X-Register befindlichen Wert vergleichen!
2
4
N Z C
CMP ($FB,X)Vergleiche Akku mit...indirekt X-indizierthelpDen Akku mit dem Wert vergleichen, der an der Adresse zu finden ist, die an der Zero-Page-Adresse + X-Register liegt!
2
6
N Z C
CMP ($FB),YVergleiche Akku mit...indirekt Y-nach-indizierthelpDen Akku mit dem Wert vergleichen, den man an der Adresse+Y-Register findet, wobei diese Adresse wiederum an der angegebenen Zero-Page-Adresse liegt.
2
N Z C
CPXhelpComPare X-Register #$3CVergleiche X-Register mit...unmittelbarhelpDas X-Register mit dem angegebenen Wert vergleichen!
2
2
N Z C
CPX $0821Vergleiche X-Register mit...absoluthelpDas X-Register mit dem an der absoluten Adresse befindlichen Wert vergleichen!
3
4
N Z C
CPX $FBVergleiche X-Register mit...Zero-PagehelpDas X-Register mit dem an der Zero-Page-Adresse befindlichen Wert vergleichen!
2
3
N Z C
CPYhelpComPare Y-Register #$3CVergleiche Y-Register mit...unmittelbarhelpDas Y-Register mit dem angegebenen Wert vergleichen!
2
2
N Z C
CPY $0821Vergleiche Y-Register mit...absoluthelpDas Y-Register mit dem an der absoluten Adresse befindlichen Wert vergleichen!
3
4
N Z C
CPY $FBVergleiche Y-Register mit...Zero-PagehelpDas Y-Register mit dem an der Zero-Page-Adresse befindlichen Wert vergleichen!
2
3
N Z C

 

Sprungbefehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
BCChelpBranch on Carry Clear $080DSpringe wenn das Carry-Flag gelöscht ist.relativwarningWenn C=0, springe zur angegebenen Adresse. Da es sich um eine relative Adressierung handelt, darf das Ziel max. +127 bzw. -128 Bytes entfernt liegen!
2
prüft C=0
BCShelpBranch on Carry Set $080DSpringe wenn das Carry-Flag gesetzt ist.relativwarningWenn C=1, springe zur angegebenen Adresse. Da es sich um eine relative Adressierung handelt, darf das Ziel max. +127 bzw. -128 Bytes entfernt liegen!
2
prüft C=1
BVChelpBranch on oVerflow Clear $080DSpringe wenn das Overflow-Flag gelöscht ist.relativwarningWenn V=0, springe zur angegebenen Adresse. Da es sich um eine relative Adressierung handelt, darf das Ziel max. +127 bzw. -128 Bytes entfernt liegen!
2
prüft V=0
BVShelpBranch on oVerflow Set $080DSpringe wenn das Overflow-Flag gesetzt ist.relativwarningWenn V=1, springe zur angegebenen Adresse. Da es sich um eine relative Adressierung handelt, darf das Ziel max. +127 bzw. -128 Bytes entfernt liegen!
2
prüft V=1
BEQhelpBranch on EQual $080DSpringe wenn gleichrelativwarningWenn gleich, springe zur angegebenen Adresse. Da es sich um eine relative Adressierung handelt, darf das Ziel max. +127 bzw. -128 Bytes entfernt liegen!
2
prüft Z=1
BNEhelpBranch on Not Equal $080DSpringe wenn ungleichrelativwarningWenn ungleich, springe zur angegebenen Adresse. Da es sich um eine relative Adressierung handelt, darf das Ziel max. +127 bzw. -128 Bytes entfernt liegen!
2
prüft Z=0
BPLhelpBranch on PLus $080DSpringe wenn positivrelativwarningWenn positiv, springe zur angegebenen Adresse. Da es sich um eine relative Adressierung handelt, darf das Ziel max. +127 bzw. -128 Bytes entfernt liegen!
2
prüft N=0
BMIhelpBranch on Minus $080DSpringe wenn negativrelativwarningWenn negativ, springe zur angegebenen Adresse. Da es sich um eine relative Adressierung handelt, darf das Ziel max. +127 bzw. -128 Bytes entfernt liegen!
2
prüft N=1
JMPhelpJuMP to $080DSpringe nachabsoluthelpSpringe direkt zur angegebenen Adresse
3
3
JMP ($08E2)Springe indirekt nach
Achtung: Falle!
indirekthelpSpringe zur Adresse, die an der angegebenen Adresse gespeichert ist.
3
6
JSR $080DhelpJump to SUbroutineSpringe zum UnterprogrammimplizitinfoSpringt zum Unterprogramm an der angegebenen Stelle. Dabei wir die Rücksprungadresse für RTS auf dem Stack gespeichert.
3
6
RTShelpReTurn from SubroutineSpringe zurück zum AufruferimplizitinfoSpringt zur aktuellen Adresse, die auf dem Stack liegt.
1
6
RTIhelpReTurn from InterruptInterrupt verlassen
$40
implizitinfoBeendet die aktuelle Interrupt-Routine, holt die Statusregister vom Stack und setzt das Programm an der auf dem Stack hinterlegten Adresse fort.
1
6
holt SR vom Stack

 

Stackbefehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
PHAhelpPusH Akku on stackAkku-Inhalt auf den Stack legenimplizithelpKopiert den Akku auf den Stack
1
3
PHPhelpPusH Processor statusregister on stackStatusregister auf den Stack legenimplizithelpKopiert das Statusregister (SR) auf den Stack
1
3
PLAhelpPuLl Akku from stackAkku-Inhalt vom Stack holenimplizithelpKopiert das Byte von der aktuellen Stackposition in den Akku
1
4
N Z
PLPhelpPuLl Processor status from stackStatusregister vom Stack holenimplizithelpSetzt die Flags im Statusregister (SR) mit den Bits aus dem Byte von der aktuellen Stackposition
1
4
ALLE!

 

Flag-Befehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
CLChelpCLear CarryCarry-Flag auf 0 setzen
$18
implizithelpDas Carry-Flag auf 0 setzen.
1
2
C
CLDhelpCLear DecimalDecimal-Flag auf 0 setzen
$D8
implizithelpDas Decimal-Flag auf 0 setzen.
1
2
D
CLIhelpCLear Interrupt-FlagInterrupt-Flag auf 0 setzen
$58
implizithelpUm Interrupts wieder zu erlauben, I-Flag auf 0 setzen.
1
2
I
CLVhelpCLear oVerflow-FlagOverflow-Flag auf 0 setzen
$B8
implizithelpDas V-Flag wieder auf 0 setzen.
1
2
V
SEChelpSEt CarryCarry-Flag auf 1 setzen
$38
implizithelpDas Carry-Flag auf 1 setzen.
1
2
C
SEDhelpSEt DecimalDecimal-Flag auf 1 setzen
$F8
implizithelpDas Decimal-Flag auf 1 setzen.
1
2
D
SEIhelpSEt Interrupt-FlagInterrupt-Flag auf 1 setzen
$78
implizithelpUm Interrupts zu verhindern, I-Flag auf 1 setzen.
1
2
I

 

Restliche Befehle

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
BRKhelpBReaKSoftware-Interrupt auslösenimplizit
1
7
B I
NOPhelpNo OPerationNichts machenimplizit
1
2

 

ACHTUNG:

Illigale-OpCodes (undokumentierte Befehle)

MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
MnemonicBeschreibung
OpCode
Adressierung
Bytes
TZ
NV-BDIZC
ALR #$A5AND+LSRhelpFührt per AND eine UND-Verknüpfung mit dem angegebenen Wert und dem Akku durch. Abschließend wird per LSR der Akku bitweise nach rechts verschoben.unmittelbar
2
2
N Z C
ARR #$A5AND+RORhelpFührt per AND eine UND-Verknüpfung mit dem angegebenen Wert und dem Akku durch. Abschließend wird per ROR der Akku bitweise nach rechts rotiert.unmittelbar
2
2
N Z C
ASOhelpalternatives Mnemonic: SLO $082EASL+ORAhelpKombination von ASL + ORA. Dabei wird das über die Adressierung zufindene Byte zunächst per ASL bitweise nach links verschoben und anschließend mit dem Akku ODER-Verknüpft.absolut
3
6
N Z C
ASO $082E,XASL+ORA absolut X-indiziert
3
7
N Z C
ASO $082E,YASL+ORA absolut Y-indiziert
3
7
N Z C
ASO $FBASL+ORA Zero-Page
2
5
N Z C
ASO $FB,XASL+ORA Zero-Page X-indiziert
2
6
N Z C
ASO ($FB,X)ASL+ORA indirekt X-indiziert
2
8
N Z C
ASO ($FB),YASL+ORA indirekt Y-nach-indiziert
2
8
N Z C
AXShelpalternatives Mnemonic: SAX $082EAkku+XReg+StorehelpDie Inhalte von Akku und X-Register werden UND-Verknüpft, aber OHNE eines der beiden Register zu ändern! Das Ergbnis wird dann an der angegebenen Adresse abgelegt. Die Flags im Statusregister (SR) bleiben ebenfalls unverändert!absolut
3
4
ASX $FBAkku+XReg+StoreZero-Page
2
3
ASX $FB,XAkku+XReg+StoreZero-Page X-indiziert
2
4
ASX ($FB,X)Akku+XReg+Storeindirekt X-indiziert
2
6
DCMhelpalternatives Mnemonic: DCP $082EDEC+CMPhelpVerringert das Byte an der angegebenen Speicherstelle mit DEC und vergleicht dieses dann mittels CMP mit dem Akku.absolut
3
6
N Z C
DCM $082E,XDEC+CMPabsolut X-indiziert
3
7
N Z C
DCM $082E,YDEC+CMPabsolut Y-indiziert
3
7
N Z C
DCM $FBDEC+CMPZero-Page
2
5
N Z C
DCM $FB,XDEC+CMPZero-Page X-indiziert
2
6
N Z C
DCM ($FB,X)DEC+CMPindirekt X-indiziert
2
8
N Z C
DCM ($FB),YDEC+CMPindirekt Y-nach-indiziert
2
8
N Z C
INShelpalternatives Mnemonic: ISC $082EINC+SBChelpErhöht das Byte an der angegebenen Speicherstelle mit INC und subtrahiert es dann mit SBC vom Akku.absolut
3
6
N Z C
INS $082E,XINC+SBCabsolut X-indiziert
3
7
N Z C
INS $082E,YINC+SBCabsolut Y-indiziert
3
7
N Z C
INS $FBINC+SBCZero-Page
2
5
N Z C
INS $FB,XINC+SBCZero-Page X-indiziert
2
6
N Z C
INS ($FB,X)INC+SBCindirekt X-indiziert
2
8
N Z C
INS ($FB),YINC+SBCindirekt Y-nach-indiziert
2
8
N Z C
LAX $082ELDA+LDXhelpLAX lädt das Byte von der angegebenen Adresse gleichzeitig in den Akku und ins X-Register.absolut
3
4
N Z
LAX $082E,YLDA+LDXabsolut Y-indiziert
3
4-5
N Z
LAX $FBLDA+LDXZero-Page
2
3
N Z
LAX $FB,XLDA+LDXZero-Page X-indiziert
2
N Z
LAX ($FB,X)LDA+LDXindirekt X-indiziert
2
6
N Z
LAX ($FB),YLDA+LDXindirekt Y-nach-indiziert
2
N Z
LSEhelpalternatives Mnemonic: SRE $082ELSR+EORhelpKombination von LSR + EOR. Dabei wird das über die Adressierung zufindene Byte zunächst per LSR bitweise nach rechts verschoben und anschließend mit dem Akku exklusiv-ODER-Verknüpft.absolut
3
6
N Z C
LSE $082E,XLSR+EORabsolut X-indiziert
3
7
N Z C
LSE $082E,YLSR+EORabsolut Y-indiziert
3
7
N Z C
LSE $FBLSR+EORZero-Page
2
5
N Z C
LSE $FB,XLSR+EORZero-Page X-indiziert
2
6
N Z C
LSE ($FB,X)LSR+EORindirekt X-indiziert
2
8
N Z C
LSE ($FB),YLSR+EORindirekt Y-nach-indiziert
2
8
N Z C
NOPWeitere OpCodes für den bekannten NOP-Befehl.
$1A,$3A, $5A,$7A, $89,$DA, $FA
implizit
1
2
OAL #$A5ORA+AND+LDXhelpFührt zuerst per ORA eine ODER-Verknüpfung mit dem Akku und dem Wert #$EE durch. Dann wird der Akku durch AND mit dem angegebenen Wert UND-Verknüpft und anschließend ins X-Register kopiert TAX.unmittelbar
2
2
N Z
RLA $082EROL+ANDhelpKombination von ROL + AND. Dabei wird das über die Adressierung zufindene Byte zunächst per ROL bitweise nach links verschoben (von rechts wird das C-Flag eingeschoben) und anschließend mit dem Akku UND-Verknüpft.absolut
3
6
N Z C
RLA $082E,XROL+ANDabsolut X-indiziert
3
7
N Z C
RLA $082E,YROL+ANDabsolut Y-indiziert
3
7
N Z C
RLA $FBROL+ANDZero-Page
2
5
N Z C
RLA $FB,XROL+ANDZero-Page X-indiziert
2
6
N Z C
RLA ($FB,X)ROL+ANDindirekt X-indiziert
2
8
N Z C
RLA ($FB),YROL+ANDindirekt Y-nach-indiziert
2
8
N Z C
RRA $082EROR+ADChelpRRA kombiniert ein ROR mit einem ADC. Dabei wird das über die Adressierung zufindene Byte zunächst per ROR bitweise nach rechts verschoben (das herausfallende Bit landet im C-Flag) und wird anschließend durch ADC mit dem Akku addiert (dabei wird natürlich auch das Carry-Flag vom ROR beachtet).absolut
3
6
N Z
RRA $082E,XROR+ADCabsolut X-indiziert
3
7
N Z
RRA $082E,YROR+ADCabsolut Y-indiziert
3
7
N Z
RRA $FBROR+ADCZero-Page
2
5
N Z
RRA $FB,XROR+ADCZero-Page X-indiziert
2
6
N Z
RRA ($FB,X)ROR+ADCindirekt X-indiziert
2
8
N Z
RRA ($FB),YROR+ADCindirekt Y-nach-indiziert
2
8
N Z
SAX #$A5Subtract+AND+TAXhelpHier wird zu erst eine UND-Verknüfung zwischen dem Akku und dem X-Register vorgenommen. Dann wird vom Ergebnis der UND-Verknüpfung der angegebenen Wert abgezogen (ohne das Carry-Flag zu beachten!) und das Ergebnis im X-Register gespeichert. Das C-Flag kann aber durch die Subtraktion wiederum gesetzt werden, das OVerflow-Flag bleibt allerdings, ebenso wie der Akku, unverändert!unmittelbar
2
2
N Z
SKBSKip next BytehelpÜberspringt einfach das nächste Byte.
$80, $82, $C2, $E2, $04, $14, $34, $44, $54, $64, $74, $D4, $F4
implizit
1
SKWSKip next WordhelpÜberspringt das nächste Word, die nächsten zwei Byte.
$0C,$1C, $3C,$5C, $7C,$DC, $FC
implizit
1
XAA #$A5TXA+ANDhelpKopiert den Inhalt des X-Register mit TAX in den Akku und führt dann eine UND-Verknüpfung mit dem angegebenen Wert und dem Akku durch.unmittelbar
2
2
N Z
Die folgenden illegalen OpCodes werden NICHT im Buch:
'The Complete Commodore Inner Space Anthology' erwähnt.
Da ihr verhalten teilweise recht abenteuerlich ist, sollte man bei ihrer Nutzung noch vorsichtiger sein!!!
ANC #$A5Akku AND value influence CarryhelpDer Akku wird mit dem angegebenen Wert UND-Verknüpft. Das Ergebnis steht dann auch wieder im Akku. Er sieht also zunächst wie ein normaler AND-Befehl aus, aber hier wird das N-Flag ins Carry-Flag kopiert.
$2B,$0B
unmittelbar
2
2
N Z C
AXA $082E,YAkku and X-Reg. STAhelpEs wird der Akku mit dem X-Register und anschließend mit dem Wert des MSB+1 UND-Verknüpft. Anschließend wird das Ergebnis an der angegebenen Adresse gespeichert.absolut Y-indiziert
3
5
HLThelpHaLT oder auch KILlABSTURZ!helpLäßt den Rechner einfach abstürzen. Nichts geht mehr, ein Reset oder Neustart ist notwendig!
$02,$12, $22,$32, $42,$52, $62,$72, $92,$B2, $D2,$F2
implizit
1
?? - Absturz
LAS $082E,YLade Alles mit SchrotthelpFührt eine UND-Verknüpfung mit dem Byte das an der angegebenen Speicherstelle zufinden ist und dem Stackpointer (SP) durch. Das Ergebnis wird dann im Akku, X-Register und SP abgelegt. 😉absolut Y-indiziert
3
2
N Z C
SAY $082E,XStore value AND Y-RegisterhelpEs wird das Y-Register mit dem Wert des MSB+1 UND-Verknüpft und anschließend an der angegebenen Adresse gespeichert.absolut X-indiziert
3
5
SBC #$5AWeiterer OpCode für den bekannten SBC.unmittelbar
2
2
N V Z C
TAS $082E,YTXS+AND+STAhelpZunächst werden der Akku und das X-Register per UND-Verknüpft, aber ohne das sich eines der Register ändert! Das Ergebnis wird in den Stackpointer (SP / nicht auf den Stack!!!) geschrieben. Dann wird das Ergebnis mit dem (Wert des MSB)+1 der angegebenen Adresse UND-Verknüpft und im Speicher an der angegebenen Adresse + Y-Register abgelegt. Wenn ihr das ausprobieren wollt, achtet auf den Stackpointer. Da der sehr wahrscheinlich geändert wurde (das sollte schon ein ungeheurer Zufall sein, wenn die erste UND-Verknüpfung den selben Wert wie der aktuelle SP ergibt) solltet ihr ihn mit TSX / TXS in einer Speicherstelle sichern und wiederherstellen.absolut Y-indiziert
3
5
XAS $082E,YX-Reg. AND value Stored to memoryhelpEs wird das X-Register mit dem Wert des MSB+1 UND-Verknüpft und anschließend an der angegebenen Adresse gespeichert.absolut Y-indiziert
3
5

 

Übersicht der Adressierungsarten

Wie die Befehle ihre benötigten Werte finden, wo sie etwas ablegen sollen oder wohin sie springen, wird durch die sog. Adressierung angegeben. In der nachfolgenden Liste sind alle möglichen Adressierungsarten aufgeführt. Die Befehle dienen nur als Beispiel, es gibt natürlich verschiedene Befehle mit der jeweiligen Adressierungsart, aber es sind längst nicht alle Adressierungsarten mit jedem Befehl, in jeder Kombination möglich. Was machbar ist findet ihr oben in der Tabelle mit den Mnemonics. Da ein Befehl immer ein Byte benötigt, könnt ihr schon an der Adressierungsart den Speicherbedarf des jeweiligen Befehls erkennen (s. Spalte Bytes).
Der Link beim Befehl führt zur ersten Stelle im Blog, an der diese Adressierungsart verwendet und erklärt wurde.

Adressierungsarten

AdressierungBeispielBeschreibungBytes
unmittelbar (direkt)LDA #$3A

Bei der unmittelbaren Adressierung, wird direkt ein fester Wert (hier #$3A) als Parameter übergeben. Dieser Wert wird dann vom Befehl entsprechend verarbeitet.

2
absolutLDA $082D

Bei der absoluten Adressierung, wird eine 16-Bit Speicheradresse (hier $082D) als Parameter übergeben. Der Befehl bezieht sich einfach auf die angegebenen Speicherstelle.

3
absolut X-indiziertLDA $082D,X

Bei der mit X-indizierten absoluten Adressierung, wird neben der 16-Bit Speicheradresse (hier $082D) noch das X-Register als Parameter angeben. Die Speicherstelle, auf die sich der Befehl bezieht, wird errechnet, indem man zur angegeben Adresse noch den Inhalt des X-Registers addiert.

3
absolut Y-indiziertLDA $082D,Y

Bei der mit Y-indizierten absoluten Adressierung, wird neben der 16-Bit Speicheradresse (hier $082D) noch das Y-Register als Parameter angeben. Die Speicherstelle, auf die sich der Befehl bezieht, wird errechnent, indem man zur angegeben Adresse noch den Inhalt des Y-Registers addiert.

3
Zero-PageLDA $FB

Bei der Zero-Page-Adressierung, wird eine 8-Bit Speicheradresse (hier $FB) als Parameter angeben. Der Befehl bezieht sich einfach auf die angegebene Zero-Page-Adresse.

2
Zero-Page X-indiziertLDA $FB,X

Bei der mit X-indizierten Zero-Page-Adressierung, wird neben der 8-Bit Speicheradresse (hier $FB) noch das X-Register als Parameter übergeben. Der Befehl bezieht sich auf die Speicherstelle, die sich durch Addition der übergebenen Zero-Page-Adresse mit dem X-Register ergibt.
Achtung:
Man muss bei den indizierten Zero-Page-Adressierungen allerdings beachten, dass die Zero-Page, auch durch die Addition mit dem jeweiligen Register (hier X) NICHT, verlassen werden kann!
Wäre hier X=5, dann ergebe sich eigentlich die Adresse $FB+$5=$0100. Allerdings wird die Adresse nur über ein Byte bestimmt, wir landen also bei $00, da nur das LSB beachtet wird!!!

2
Zero-Page Y-indiziertLDX $FB,Y

Bei der mit Y-indizierten Zero-Page-Adressierung, wird neben der 8-Bit Speicheradresse (hier $FB) noch das Y-Register als Parameter übergeben. Diese Adressierung gibt es nur beim LDX- und STX-Befehl. Der Befehl bezieht sich auf die Speicherstelle, die sich durch Addition der übergebenen Zero-Page-Adresse mit dem Y-Register ergibt.
Bitte die Anmerkungen bei Zero-Page X-indiziert beachten!

2
indirektJMP ($0821)

Bei der indirekten Adressierung, wird eine 16-Bit Speicheradresse als Parameter übergeben. Die dort zu findene Adresse wird als Sprungziel verwendet. Diese Adressierung gibt es nur beim JMP-Befehl!

Achtung:
Gebt ihr etwas wie ($C0FF) beim JMP-Befehl an, dann führt euer Sprung nicht zum gewünschten Ziel!
Da eine Adresse zwei Byte benötigt verteilt sich diese hier über eine Page-Grenze. Wenn das der Fall ist, wird das LSB zwar vom $C0FF genommen. Aber das MSB sucht der Przessor an $C000, statt wie erwartet an $C100!!!

3
indirekt X-indiziertLDA ($FB,X)

Bei der X-indizierten indirekten Adressierung, werden eine 8-Bit Speicheradresse (Zero-Page) und das X-Register als Parameter übergeben. Die Adresse berechnet sich wie folgt: Zur übergebenen Zero-Page-Adresse wird zunächst der Inhalt des X-Registers addiert, der Befehl bezieht sich dann auf die dort zufindene Adresse.
Bitte die Anmerkungen bei Zero-Page X-indiziert beachten!

2
indirekt Y-nach-indiziertLDA ($FB),Y

Bei der indirekten Y-nach-indizierten Adressierung, werden eine 8-Bit Speicheradresse (Zero-Page) und das Y-Register als Parameter übergeben. Die Berechnung der Adresse, auf die sich der Befehl bezieht, geschieht so: Es wird die Adresse, die an der angegebenen Zero-Page-Adresse zu finden ist, mit dem Inhalt des Y-Registers addiert und schon weiß der Befehl worauf er sich beziehen soll.

Da hier der Register-Inhalt zur 16-Bit Adresse addiert wird, gelten die Anmerkungen von den anderen indizierten Zero-Page Adressierungen nicht!

2
relativBNE $0821

Bei der relativen Adressierung (gibt es nur bei den acht bedingten Sprüngen), wird eine 16-Bit Speicheradresse als Parameter übergeben. Der Assembler rechnet daraus die Entfernung als vorzeichenbehaftetes Byte aus und speichert intern nur die Sprungweite. Daher darf das Ziel nicht weiter als -128 bzw. +127 Bytes entfernt liegen.

2
implizitDEX

Bei der impliziten Adressierung beinhaltet der Befehl bereits die Adresse, auf die er sich auswirkt. Daher wird hier kein Parameter angegeben.

1
AkkumulatorLSR

Diese Adressierung ist eigentlich genau wie die implizite, allerdings ist das Ziel immer der Akku. Es gibt sie nur bei vier Befehlen (ASL, LSR, ROL und ROR). Die Besonderheit gegenüber der impliziten Adressierung ist, das alle Befehle mit impliziter Adressierung nur diese Adressierungsart kennen, die oben erwähnten vier Befehle besitzen auch noch andere Adressierungsarten.

1

 

 


Schrott!!Naja...Geht so...Ganz gut...SUPER! (5 Bewertungen | Ø 5,00 von 5 | 100,00%)

Loading...


<<< zurück |

weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Protected by WP Anti Spam