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
 

6502   illegale Opcodes

Illegale Opcodes gehören nicht zu den offiziellen Befehlen, sondern ergeben sich durch Vereinfachung der Logik auf nicht belegten Maschinensprachbefehlen – sind also quasi ein 'Abfallprodukt' einer Prozessoroptimierung. Im Hinblick auf zukünftige Erweiterungen sollten die inoffiziellen Befehle deshalb nicht in öffentlich zugängigen Programmen verwendet werden, sondern nur zum privaten Erproben der CPU genutzt werden.


KIL ... bringt den Prozessor zum Absturz

        02, 12, 22, 32 ,42, 52, 62, 72, 92, B2, D2, F2

NOP mit 1 Byte

        1A, 3A, 5A, 7A, DA, FA

NOP mit 2 Byte

        04, 14, 34, 44, 54, 64, 74, 80, 82, 89, C2, D4, E2, F4

NOP mit 3 Byte

        0C, 1C, 3C, 5C, 7C, DC, FC

OpcodeimmZPZPxiZxiZyabsab,xab,yFunktionNVZC
SLO071703130F1F1B{adr}:={adr}*2 A:=A or {adr}×××
RLA273723332F3F3B{adr}:={adr}rol A:=A and {adr}×××
SRE475743534F5F5B{adr}:={adr}/2 A:=A exor {adr}×××
RRA677763736F7F7B{adr}:={adr}ror A:=A adc {adr}××××
SAX8797838F{adr}:=A&X
LAXA7B7A3B3AFBFA,X:={adr}××
DCPC7D7C3D3CFDFDB{adr}:={adr}-1 A-{adr}×××
ISCE7F7E3F3EFFFFB{adr}:={adr}+1 A:=A-{adr}××××
ANC0BA:=A&#{imm}×××
ANC2BA:=A&#{imm}×××
ALR4BA:=(A&#{imm})*2×××
ARR6BA:=(A&#{imm})/2××××
XAA8BA:=X&#{imm}××
LAXABA,X:=#{imm}××
AXSCBX:=A&X-#{imm}×××
SBCEBA:=A-#{imm}××××
AHX939F{adr}:=A&X&H
SHY9C{adr}:=Y&H
SHX9E{adr}:=X&H
TAS9BS:=A&X {adr}:=S&H
LASBBA,X,S:={adr}&S××

A = Akkumulator
X = X-Register
Y = Y-Register
S = Stack-Pointer
P = Status-Register
+(S) = Stack-Pointer relativ mit pre-Increment
(S)- = Stack-Pointer relativ mit post-Decrement

XAA und LAX sind derart instabil, dass sie auf keinen Fall benutzt werden sollten.