Der Mikroprozessor 6502 kennt insgesamt 13 Adressierungsarten. Hierzu Kommen noch zwei Adressierungsarten die nur der 65C02 Prozessor kennt.
In diesem Kapitel werden wir nicht die Funktion der Adressierungsarten erklären sondern nur ihre Schreibweise im BIBO-ASSEMBLER. Die Erklärung der einzelnen Funktionen würde den Rahmen dieses Handbuches sprengen. Wir verweisen hier auf einige sehr gute Lehrbücher, die im Fachhandel zu beziehen sind.
1. Implizierte Adressierung: Opcodes die Prozessorinterne Vorgänge auslösen.
B
eispiele:
PRA
TAX
INY
2. Immediate Adressierung: Die direkte Adressierung besteht aus dem Opcode und einem 8 Bit Wert. Dieser Wert kann dezimal, Hexadezimal, als ASCII-Zeicheri oder als Low- oder High-Byte einer Adresse oder Label eingegeben werden.
Dezimal:Das Doppelkreuz (#) zeigt an, daß es sich nachfolgend um einen 8-Bit Wert handelt. Nach dem Doppelkreuz wird der dezimale Wert angegeben.
Beispi
ele:
LDA #0
ORA #123
EOR #255Hexadezimal: Dem Doppelkreuz muß das Dollar-Zeichen ($) und eine Hexadezimale Zahl folgen.
Beispiele:
LDA #$1F
ORA
#$10
EOR #$FFBei Werten zwischen 0 und 9 kann das Dollar-Zeichen auch weggelassen werden, und der Wert dezimal angegeben werden.
LDA
#$9 entspricht LDA #9ASCII:Ein ASCII-Wert wird durch ein Hochkomma (') hinter dem Doppelkreuz angegeben.
Beispiele:
LDA #
'A
LDX #'?Hierbei können keine inversen Zeichen eingegeben werden. Sie können aber durch Addition von S80 (128) das ASCII-Zeichen invertieren.
LDA
#'A+$80Low-Byte einer Adresse: Das untere Byte einer 16-Bit Adresse oder Label wird als Wert angegeben.
Beispiele:
LDA #
START
LDA #$1234 entspricht LDA #$34High-Byte einer Adresse: Soll das obere Byte einer 16-Bit Adresse als Wert eingegeben werden, wird statt des Doppelkreuzes (#) der Schrägstrich (/) eingegeben.
Beis
piele:
LDA /START
LDA /$1234 entspricht LDA #$12
3. Absolute Adressierung: Dem Opcode folgt eine 16-Bit Adresse oder ein Label, der auf eine 16-Bit Adresse zeigt.
Beispiele:
LDA 12
345
STA S4000
STX LABEL
4. Zeropage Adressierung: Dem Opcode folgt eine 8-Bit Adresse oder ein Label, der auf eine 8-Bit Adresse zeigt.
Beispiele:
LDA
128
STA S80
STX LABEL
5. Accumulator Adressierung: Diese Adressierungsart bezieht sich nur auf den Accumulator des 6502 Prozessors.
Beispiele:
LS
R
ASL
ROR
6. Indizierte Indirekte Adressierung: Der Inhalt des X-Registers wird zu einer 8-Bit Adresse addiert. Das 'X' muß innerhalb der Klammern '()' durch ein Komma getrennt stehen.
Beispiele:
LDA ($
45,X)
LDA (LABEL,X)
7. Indirekt Indizierte Adressierung: Der Inhalt des Y-Registers wird zu der Adresse addiert, auf die eine Zeropageadresse zeigt. Das 'Y' muß sich außerhalb der Klammern '()' befinden
Beispiele:
LDA ($
58),Y
STA (LABEL),Y
8. X-Indizierte Adressierung: Das X-Register wird zu einer 8-Bit Adresse addiert.
Beispiele:
LDA $80,X
STA L
ABEL,X
9. X-Indizierte Adressierung: Das X-Register wird zu einer16-Bit Adresse addiert.
Beispiele:
LDA $8000,X
STA
LABEL,X
10. Y-Indizierte Adressierung: Das Y-Register wird zu einer 8-Bit Adresse addiert.
Beispiele:
LDA
$E0,Y
STA LABEL,Y
11. Y-Indizierte Adressierung: Das Y-Register wird zu einer 16-Bit Adresse addiert.
Beispiele:
LDA $4000,Y
STA LAB
EL,Y
12. Indirekt Absolute Adressierung: Für diese Adressierungsart gibt es nur einen Befehl. Die Adresse kann 8- oder16-Bit lang sein.
Beispiele:
JMP ($3000)
JNP ($45)
JMP
(LABEL)
13. Relative Adressierung: Diese Adressierungsart gibt es nur bei Sprungbefehlen (Branches). Der relative Sprung kann maximal -126 oder +129 Bytes um den Befehl reichen.
Beispiele:
BMI $4010
BEQ *+
10
BEQ LABEL
Die folgenden zwei Adressierungsarten können nur bei der Verwendung der 65C02-Opcodes benutzt werden.
14. Indirekte Zeropage Adressierung: Diese Adressierungsart bezieht sich nur auf eine 8-Bit Adresse.
Beispiele:
LDA ($
45)
STA (LABEL)
15. Absolute X-Indizierte Indirekte Adressierung: Diese Adressierungsart bezieht sich immer auf eine absolute Adresse.
Bei
spiele:
JMP ($4000,X)
JMP (LABEL,X)