Herwig Siebenhofer
 / Home / 6502
 
6502 Op-Codes

    ADC
    AND
    ASL
    BCC
    BCS
    BEQ
    BIT
    BMI
    BNE
    BPL
    BRK
    BVC
    BVS
    CLC
    CLD
    CLI
    CLV
    CMP
    CPX
    CPY
    DEC
    DEX
    DEY
    EOR
    INC
    INX
    INY
    JMP
    JSR
    LDA
    LDX
    LDY
    LSR
    NOP
    ORA
    PHA
    PHP
    PLA
    PLP
    ROL
    ROR
    RTI
    RTS
    SBC
    SEC
    SED
    SEI
    STA
    STX
    STY
    TAX
    TAY
    TSX
    TXA
    TXS
    TYA

Archiv

    Kurzübersicht
    Zahlentabelle
    6502 Varianten
    6502 Register
    Adressierungen
    illegale Ops
    6502 Bugs
 

Adressierungsarten

implizit

Die implizite Adressierung besteht aus einem 1 Byte Opcode ohne Operand. Sie beinhaltet alle Befehle, die keine Werte benötigen. Bsp.: INX, DEY, BRK

unmittelbar

Die unmittelbare Adressierung hat zwei Bytes bestehend aus einem 1 Byte Opcode und 1 Byte Operand, der direkt den benötigten Wert beinhaltet. Bsp.: LDA #$12, ADC #§88

relativ

Die relative Adressierung bei den Branch-Befehlen hat zwei Bytes bestehend aus einem 1 Byte Opcode und 1 Byte Operand. Der Operand ist relativ zur aktuellen Speicheradresse zu verstehen, zwischen -128 bis +127 Bytes. Der negative Bereich wird als Zweierkomplement angegeben.

absolut

Die absolute Adressierung hat drei Bytes bestehend aus einem 1 Byte Opcode und 2 Bytes Operand. Der Operand gibt eine Speicherstelle an, deren Inhalt zur Berechnung verwendet wird – bspw. AND $4400. Bei den Sprungbefehlen gibt es die 16-Bit Zieladresse an. Bsp. JSR $1234

absolut mit Register indiziert

Bei dieser Adressierung bestehend aus 1 Byte Opcode und 2 Byte Operand wird zum 16 Bit Adresswert der Wert des angegebenen Registers dazu addiert und ergibt damit die eigentliche Adresse. Bsp.: LDA $5500,X

indirekt absolut

Die indirekt absolute Adressierung bestehend aus 1 Byte Opcode und 2 Bytes Operand zeigt auf eine Speicherstelle, in der die eigentliche Adresse (zuerst Hi-Byte, dann Lo-Byte) steht. Bsp.: JMP ($3344)

Zero Page

Die Zero Page Adressierung ist ein Spezialfall der absoluten Adressierung bei der nur 2 Bytes bestehend aus 1 Byte Opcode und 1 Byte Operand benötigt wird. Mit dieser Adressierung können nur die ersten 256 Byte (Speicherstellen von $0000 bis $00FF) angesprochen werden. Das Hi-Byte ist hier immer $00 und wird nicht angegeben. Bsp.: LDA $22

Zero Page mit Register indiziert

Bei dieser Adressierung bestehend aus 1 Byte Opcode und 1 Byte Operand wird zum Wert der Inhalt des angegebenen Registers dazu addiert und ergibt damit die eigentliche Adresse. Bsp.: LDX $33,Y

X indizierte indirekte Adressierung

Bei dieser Adressierung bestehend aus 1 Byte Opcode und 1 Byte Operand wird zunächst zum Operand das X-Register dazu addiert. Das Ergebnis ist ein Pointer auf eine Zero Page Adresse, in der die eigentliche 16 Bit Adresse steht. Bsp.: LDA ($77,X)

indirekte Y indizierte Adressierung

Diese Adressierung bestehend aus 1 Byte Opcode und 1 Byte Operand ist ein Pointer auf eine Zero Page Adresse, deren 16 Bit-Inhalt geholt wird und das Y-Register dazu addiert wird. Das Ergebnis ist die eigentliche Speicheradresse. Bsp.: LDA ($88),Y