CPU 6502 Brief

6502 Addressing modes

Immediate #nn
Absolute nnnn
Zero Page nn
Implied
Indirect Absolute (nnnn)
Absolute Indexed,X nnnn,X
Absolute Indexed,Y nnnn,Y
Zero Page Indexed,X nn,X
Zero Page Indexed,Y nn,Y
Indexed Indirect (a.k.a. Indirect X) (nn,X)
Indirect Indexed (a.k.a. Indirect Y) (nn),Y
Relative +nnnn
Accumulator A
  • nnnn = 16 bit unsigned value
  • nn = 8 bis unsigned value
  • +nn = 8 bits signed (two’s complement) value in range -128 to +127

Flags

flag | N | V |___| B | D | I | Z | C |
N Negative
V Overflow
B BRK command
D Decimal mode on
I IRQ disable
Z Zero
C Carry

6502 Instructions

There are 56 instructions in 6502 (a little more on 65C02)

Load

INST DESC
LDA LoaD the Accumulator
LDX LoaD the X register
LDY LoaD the Y register
STA STore the Accumulator
STX STore the X register
STY STore the Y register
STZ STore Zero into memory (65C02 only)

Increment and Decrement

INST DESC
INC INCrement memory by one
INX INCrement X by one
INY INCrement Y by one
DEC DECrement memory by one
DEX DEcrement X by one
DEY DEcrement Y by one

Flag manipulation

INST DESC
CLC CLear Carry flag
CLD CLear Decimal mode
CLI CLear Interrupt disable
CLV CLear oVerflow flag
SEC SEt Carry
SED SEt Decimal mode
SEI SEt Interrupt disable
SEV DO NOT EXIST

Stack

INST DESC
TSX Transfer Stack pointer to X
TXS Transfer X to Stack pointer
PHA PusH A on stack
PHP PusH Processor status flags on stack
PLA PulL A from stack
PLP PulL Processor status flags from stack
PHX PusH X on stack (65C02 only)
PLX PulL X from stack (65C02 only)
PHY PusH Y on stack (65C02 only)
PLY PulL Y from stack (65C02 only)

Transfer

INST DESC
TAX Transfer A to X
TAY Transfer A to Y
TXA Transfer X to A
TYA Transfer Y to A
TXY or TYX DO NOT EXIST

Logical and Shift

INST DESC
AND AND memory with A
ORA OR memory with A
EOR Exclusive-OR (XOR) memory with A
ASL Accumulator Shift Left
LSR Logical Shift Right
ROL ROtate Left
ROR ROtate Right

Branch

INST DESC Flag
BCC Branch on Carry Clear C == 0
BCS Branch on Carry Set C == 1
BEQ Branch on EQual to zero Z == 1
BNE Branch on Not Equal to zero Z == 0
BMI Branch on MInus N == 1
BPL Branch on PLus N == 0
BVS Branch on oVerflow Set V == 1
BVC Branch on oVerflow Clear V == 0
JMP JuMP to another location
BRA Branch Relative Always (65C02 only)
BBR Branch if specified Bit is Reset ( some 65C02 only)
BBS Branch if specified Bit is Set ( some 65C02 only)

Test and Compare

INST DESC
CMP CoMPare memory and A
CPX ComPare memory and X
CPY ComPare memory and Y
BIT BITs test
TRB Test and Reset Bits with A (65C02 only)
TSB Test and Set Bits with A (65C02 only)
RMB Reset specified Memory Bit ( some 65C02 only)
SMB Set specified Memory Bit ( some 65C02 only)

Arithmetic

INST DESC
ADC ADd to accumulator with Carry
SBC SuBtract from accumulator with Carry

Call

INST DESC
JSR Jump to SubRoutine
RTS ReTurn from Subroutine
RTI ReTurn from Interrupt

Others

INST DESC
NOP No OPeration
BRK BReak
STP ( some 65C02 only)
WAI ( some 65C02 only)