6502 Inst Set
6502 Inst Set
H
LO-NIBBLE
I
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0 BRK ORA ??? ??? ??? --- ORA ASL ??? PHP ORA ASL ??? ??? --- ORA ASL ???
0 impl X,ind --- --- zpg zpg --- impl # A --- abs abs ---
1 BPL ORA ??? ??? ??? --- ORA ASL ??? CLC ORA ??? ??? ??? --- ORA ASL ???
0 rel ind,Y --- --- zpg,X zpg,X --- impl abs,Y --- --- abs,X abs,X ---
2 JSR AND ??? ??? BIT AND ROL ??? PLP AND ROL ??? BIT AND ROL ???
0 abs X,ind --- --- zpg zpg zpg --- impl # A --- abs abs abs ---
3 BMI AND ??? ??? ??? --- AND ROL ??? SEC AND ??? ??? ??? --- AND ROL ???
0 rel ind,Y --- --- zpg,X zpg,X --- impl abs,Y --- --- abs,X abs,X ---
4 RTI EOR ??? ??? ??? --- EOR LSR ??? PHA EOR LSR ??? JMP EOR LSR ???
0 impl X,ind --- --- zpg zpg --- impl # A --- abs abs abs ---
5 BVC EOR ??? ??? ??? --- EOR LSR ??? CLI EOR ??? ??? ??? --- EOR LSR ???
0 rel ind,Y --- --- zpg,X zpg,X --- impl abs,Y --- --- abs,X abs,X ---
6 RTS ADC ??? ??? ??? --- ADC ROR ??? PLA ADC ROR ??? JMP ADC ROR ???
0 impl X,ind --- --- zpg zpg --- impl # A --- ind abs abs ---
7 BVS ADC ??? ??? ??? --- ADC ROR ??? SEI ADC ??? ??? ??? --- ADC ROR ???
0 rel ind,Y --- --- zpg,X zpg,X --- impl abs,Y --- --- abs,X abs,X ---
8 ??? STA ??? ??? STY STA STX ??? DEY ??? --- TXA ??? STY STA STX ???
0 --- X,ind --- --- zpg zpg zpg --- impl impl --- abs abs abs ---
9 BCC STA ??? ??? STY STA STX ??? TYA STA TXS ??? ??? --- STA ??? --- ???
0 rel ind,Y --- --- zpg,X zpg,X zpg,Y --- impl abs,Y impl --- abs,X ---
A LDY LDA LDX ??? LDY LDA LDX ??? TAY LDA TAX ??? LDY LDA LDX ???
0 # X,ind # --- zpg zpg zpg --- impl # impl --- abs abs abs ---
B BCS LDA ??? ??? LDY LDA LDX ??? CLV LDA TSX ??? LDY LDA LDX ???
0 rel ind,Y --- --- zpg,X zpg,X zpg,Y --- impl abs,Y impl --- abs,X abs,X abs,Y ---
C CPY CMP ??? ??? CPY CMP DEC ??? INY CMP DEX ??? CPY CMP DEC ???
0 # X,ind --- --- zpg zpg zpg --- impl # impl --- abs abs abs ---
D BNE CMP ??? ??? ??? --- CMP DEC ??? CLD CMP ??? ??? ??? --- CMP DEC ???
0 rel ind,Y --- --- zpg,X zpg,X --- impl abs,Y --- --- abs,X abs,X ---
E CPX SBC ??? ??? CPX SBC INC ??? INX SBC # NOP ??? CPX SBC INC ???
0 # X,ind --- --- zpg zpg zpg --- impl impl --- abs abs abs ---
F BEQ SBC ??? ??? ??? --- SBC INC ??? SED SBC ??? ??? ??? --- SBC INC ???
0 rel ind,Y --- --- zpg,X zpg,X --- impl abs,Y --- --- abs,X abs,X ---
Address Modes:
Instructions by Name:
AD
.... add with carry
C
AN
.... and (with accumulator)
D
AS
.... arithmetic shift left
L
BC
.... branch on carry clear
C
BC
.... branch on carry set
S
BE
.... branch on equal (zero set)
Q
BIT .... bit test
BM
.... branch on minus (negative set)
I
BN
.... branch on not equal (zero clear)
E
BP
.... branch on plus (negative clear)
L
BR
.... interrupt
K
BV
.... branch on overflow clear
C
BV
.... branch on overflow set
S
CL
.... clear carry
C
CL
.... clear decimal
D
CLI .... clear interrupt disable
CL
.... clear overflow
V
CM
.... compare (with accumulator)
P
CP
.... compare with X
X
CP
.... compare with Y
Y
DE
.... decrement
C
DE
.... decrement X
X
DE
.... decrement Y
Y
EO
.... exclusive or (with accumulator)
R
INC .... increment
INX .... increment X
INY .... increment Y
JM
.... jump
P
JSR .... jump subroutine
LD
.... load accumulator
A
LD
.... load X
Y
LD
.... load Y
Y
LS
.... logical shift right
R
NO
.... no operation
P
OR
.... or with accumulator
A
PH
.... push accumulator
A
PH
.... push processor status (SR)
P
PL
.... pull accumulator
A
PLP .... pull processor status (SR)
RO
.... rotate left
L
RO
.... rotate right
R
RTI .... return from interrupt
RT
.... return from subroutine
S
SB
.... subtract with carry
C
SE
.... set carry
C
SE
.... set decimal
D
SEI .... set interrupt disable
ST
.... store accumulator
A
ST
.... store X
X
ST
.... store Y
Y
TA
.... transfer accumulator to X
X
TA
.... transfer accumulator to Y
Y
TS
.... transfer stack pointer to X
X
TX
.... transfer X to accumulator
A
TX
.... transfer X to stack pointer
S
TY
.... transfer Y to accumulator
A
Registers:
P
.... program counter (16 bit)
C
A
.... accumulator (8 bit)
C
X .... X register (8 bit)
Y .... Y register (8 bit)
S
.... status register [NV-BDIZC] (8 bit)
R
SP .... stack pointer (8 bit)
SR Flags (bit 7 to bit 0):
N .... Negative
V .... Overflow
- .... ignored
B .... Break
D .... Decimal (use BCD for arithmetics)
I .... Interrupt (IRQ disable)
Z .... Zero
C .... Carry
Processor Stack:
LIFO, top down, 8 bit range, 0x0100 - 0x01FF
Vendor:
MOS Technology, 1975
A + M + C -> A, C NZCIDV
+++--+
branch on C = 0 NZCIDV
------
branch on C = 1 NZCIDV
------
branch on Z = 1 NZCIDV
------
branch on N = 1 NZCIDV
------
branch on Z = 0 NZCIDV
------
branch on N = 0 NZCIDV
------
interrupt, NZCIDV
push PC+2, push SR ---1--
branch on V = 0 NZCIDV
------
branch on V = 1 NZCIDV
------
0 -> C NZCIDV
--0---
0 -> D NZCIDV
----0-
0 -> I NZCIDV
---0--
0 -> V NZCIDV
-----0
A-M NZCIDV
+++---
X-M NZCIDV
+++---
addressing assembler opc bytes cyles
--------------------------------------------
immidiate CPX #oper E0 2 2
zeropage CPX oper E4 2 3
absolute CPX oper EC 3 4
Y-M NZCIDV
+++---
M - 1 -> M NZCIDV
++----
X - 1 -> X NZCIDV
++----
Y - 1 -> Y NZCIDV
++----
M + 1 -> M NZCIDV
++----
X + 1 -> X NZCIDV
++----
Y + 1 -> Y NZCIDV
++----
M -> A NZCIDV
++----
M -> X NZCIDV
++----
M -> Y NZCIDV
++----
NOP No Operation
--- NZCIDV
------
A OR M -> A NZCIDV
++----
push A NZCIDV
------
push SR NZCIDV
------
pull A NZCIDV
++----
A - M - C -> A NZCIDV
+++--+
1 -> C NZCIDV
--1---
1 -> D NZCIDV
----1-
1 -> I NZCIDV
---1--
A -> M NZCIDV
------
X -> M NZCIDV
------
Y -> M NZCIDV
------
A -> X NZCIDV
++----
A -> Y NZCIDV
++----
SP -> X NZCIDV
++----
X -> A NZCIDV
++----
X -> SP NZCIDV
++----
Y -> A NZCIDV
++----
Disclaimer:
Errors excepted. The information is provided for free and AS IS, therefore without any warranty;
without even the implied warranty of merchantability or fitness for a particular purpose.