Adressierung
Aus C64-Wiki
Die CPU 6510 verfügt über eine Vielzahl von Adressierungsmöglichkeiten:
[Bearbeiten] Absolute Adressierung
Bei der absoluten Adressierung wird immer der Inhalt einer 16-Bit Speicheradresse angesprochen.
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
Beispiel: LDA $hhll
[Bearbeiten] Absolute X-indizierte Adressierung
Bei der absoluten X-indizierten Adressierung wird immer der Inhalt der 16-Bit Speicheradresse ($hhll+X) angesprochen.
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
Beispiel: LDA $hhll, X
[Bearbeiten] Absolute Y-indizierte Adressierung
Bei der absoluten Y-indizierten Adressierung wird immer der Inhalt der 16-Bit Speicheradresse ($hhll+Y) angesprochen.
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
Beispiel: LDA $hhll, Y
[Bearbeiten] Akkumulator Adressierung
Diese Adressierungsart ist ähnlich der impliziten Adressierung.
Die Befehle dieser Adressierungsart benötigen, wie bei der impliziten Adressierung, nur 1 Byte.
Das A (Akkumulator) kann im Mnemonic angegeben werden, muss aber nicht.
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
[Bearbeiten] Direkte Adressierung
Bei der direkten (unmittelbaren) Adressierung wird ein konstanter Wert angegeben.
Die Konstante wird immer durch ein Raute-Zeichen (#) eingeleitet.
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
Beispiel: LDA #$nn
[Bearbeiten] Implizite Adressierung
Bei der impliziten Adressierung wird kein Argument angegeben.
Die Information ergibt sich bereits aus dem Befehl.
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
Beispiel: INX
[Bearbeiten] Indirekte Adressierung
Bei der indirekten Adressierung wird das Sprungziel über einen Zeiger (oder Vektor) wie folgt ermittelt:
Assembler-Befehle, die diese Adressierung verwenden, sind hier aufgelistet.
Beispiel: JMP ($hhll)
Bei der indirekten Adressierung ist zu beachten, dass das höherwertige Adress-Byte aus derselben Page geholt wird wie das niederwertige Byte. JMP ($01FF) holt beispielsweise das niederwertige Byte (PCL) von $01FF und das höherwertige Byte (PCH) von $0100.
[Bearbeiten] Indirekte X-indizierte Zeropage-Adressierung
Bei der indirekten X-indizierten Zeropage-Adressierung wird die Adresse wie folgt ermittelt:
Assembler-Befehle, die diese Adressierung verwenden, sind hier aufgelistet.
Beispiel: LDA ($ll, X)
Wie bei der indirekten Adressierung, kann auch hier die Page-Grenze (in diesem Fall die Zeropage) nicht überschritten werden. So führt ein LDX #$2 und LDA ($FE, X) dazu, dass das niederwertige Adressbyte aus der Speicheradresse $01 geholt wird, das höherwertige Adressbyte aus $02.
[Bearbeiten] Indirekte Y-nachindizierte Zeropage-Adressierung
Bei der indirekten Y-nachindizierten Zeropage-Adressierung wird die Adresse wie folgt ermittelt:
Die Zeigeradresse (LSB=$ll ; MSB=$ll+1) plus dem Y-Register. (z.B. STA ($ll), Y)
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
Beispiel: LDA ($ll), Y
Wie bei der indirekten Adressierung, kann auch hier die Page-Grenze (in diesem Fall die Zeropage) nicht überschritten werden. Ein LDA ($FF), Y holt das niederwertige Adressbyte aus der Speicheradresse $FF, das höherwertige Adressbyte aus $00.
[Bearbeiten] Relative Adressierung
Bei der relativen Adressierung stehen dem Benutzer 8 bedingte Sprungbefehle zur Verfügung.
Es ist damit möglich, in Abhängigkeit der Bits im Statusregister, relativ zur aktuellen Adresse zu verzweigen.
Das 2.Byte einer dieser bedingten Sprungbefehle ist eine vorzeichenbehaftete Zahl,
die als positiver ($00-$7f) oder negativer ($80-$ff) Offset zum Programmzähler addiert wird.
Assembler-Befehle, die diese Adressierung verwenden, sind hier aufgelistet.
Beispiel: BEQ $hhll
[Bearbeiten] Zeropage Adressierung
Bei der Zeropage-Adressierung wird immer der Inhalt einer Speicheradresse im Bereich von $0000-$00ff angesprochen.
Da das High-Byte der Zeropage immer 0 ist, wird es weggelassen.
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
Beispiel: LDA $ll
[Bearbeiten] Zeropage X-indizierte Adressierung
Bei der X-indizierten Zeropage-Adressierung wird immer der Inhalt der Speicheradresse ($ll+X) angesprochen.
Da das High-Byte der Zeropage immer 0 ist, wird es weggelassen.
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
Beispiel: LDA $ll, X
[Bearbeiten] Zeropage Y-indizierte Adressierung
Bei der Y-indizierten Zeropage-Adressierung wird immer der Inhalt der Speicheradresse ($ll+Y) angesprochen.
Da das High-Byte der Zeropage immer 0 ist, wird es weggelassen.
Assembler-Befehle, die diese Adressierung verwenden,
sind hier aufgelistet.
Beispiel: LDX $ll, Y












