Adressierung

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Die CPU 6510 verfügt über eine Vielzahl von Adressierungsmöglichkeiten:

Inhaltsverzeichnis

[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

Ass befehl ad.gif

[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

Ass befehl bd.gif

[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

Ass befehl b9.gif


[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.


Beispiel: ASL oder ASL A

Ass befehl 0a.gif

[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

Ass befehl a9.gif

[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

Ass befehl e8.gif

[Bearbeiten] Indirekte Adressierung

Bei der indirekten Adressierung wird das Sprungziel über einen Zeiger (oder Vektor) wie folgt ermittelt:

$hhll ist das niederwertige Adress-Byte. (LSB)
$hhll+1 ist das höherwertige Adress-Byte. (MSB)

Assembler-Befehle, die diese Adressierung verwenden, sind hier aufgelistet.


Beispiel: JMP ($hhll)

Ass befehl 6c.gif

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:

$ll+X ist das niederwertige Adress-Byte. (LSB)
$ll+X+1 ist das höherwertige Adress-Byte. (MSB)

Assembler-Befehle, die diese Adressierung verwenden, sind hier aufgelistet.


Beispiel: LDA ($ll, X)

Ass befehl a1.gif

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

Ass befehl b1.gif

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

Ass befehl f0.gif

[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

Ass befehl a5.gif

[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

Ass befehl b5.gif

[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

Ass befehl b6.gif

In anderen Sprachen