Reference
WDC 65C816 (extension)
53 mnemonics, 119 encoded forms, operands little-endian. Generated from crates/isa/src/mos65816.rs.
Cycle counts show the base cost; +p is an extra cycle when an
indexed access crosses a page boundary, +t when a branch is taken.
ORA
OR accumulator
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | 09 |
imm16 | 3 | 3 | NZ |
| (indirect) | 12 |
addr8 | 2 | 5 | NZ |
| [indirect] | 07 |
addr8 | 2 | 6 | NZ |
| [indirect],y | 17 |
addr8 | 2 | 6 | NZ |
| long | 0F |
addr24 | 4 | 5 | NZ |
| long,x | 1F |
addr24 | 4 | 5 | NZ |
| stack,s | 03 |
addr8 | 2 | 4 | NZ |
| (stack,s),y | 13 |
addr8 | 2 | 7 | NZ |
AND
AND accumulator
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | 29 |
imm16 | 3 | 3 | NZ |
| (indirect) | 32 |
addr8 | 2 | 5 | NZ |
| [indirect] | 27 |
addr8 | 2 | 6 | NZ |
| [indirect],y | 37 |
addr8 | 2 | 6 | NZ |
| long | 2F |
addr24 | 4 | 5 | NZ |
| long,x | 3F |
addr24 | 4 | 5 | NZ |
| stack,s | 23 |
addr8 | 2 | 4 | NZ |
| (stack,s),y | 33 |
addr8 | 2 | 7 | NZ |
EOR
Exclusive-OR accumulator
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | 49 |
imm16 | 3 | 3 | NZ |
| (indirect) | 52 |
addr8 | 2 | 5 | NZ |
| [indirect] | 47 |
addr8 | 2 | 6 | NZ |
| [indirect],y | 57 |
addr8 | 2 | 6 | NZ |
| long | 4F |
addr24 | 4 | 5 | NZ |
| long,x | 5F |
addr24 | 4 | 5 | NZ |
| stack,s | 43 |
addr8 | 2 | 4 | NZ |
| (stack,s),y | 53 |
addr8 | 2 | 7 | NZ |
ADC
Add with carry
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | 69 |
imm16 | 3 | 3 | NZ |
| (indirect) | 72 |
addr8 | 2 | 5 | NZ |
| [indirect] | 67 |
addr8 | 2 | 6 | NZ |
| [indirect],y | 77 |
addr8 | 2 | 6 | NZ |
| long | 6F |
addr24 | 4 | 5 | NZ |
| long,x | 7F |
addr24 | 4 | 5 | NZ |
| stack,s | 63 |
addr8 | 2 | 4 | NZ |
| (stack,s),y | 73 |
addr8 | 2 | 7 | NZ |
LDA
Load accumulator
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | A9 |
imm16 | 3 | 3 | NZ |
| (indirect) | B2 |
addr8 | 2 | 5 | NZ |
| [indirect] | A7 |
addr8 | 2 | 6 | NZ |
| [indirect],y | B7 |
addr8 | 2 | 6 | NZ |
| long | AF |
addr24 | 4 | 5 | NZ |
| long,x | BF |
addr24 | 4 | 5 | NZ |
| stack,s | A3 |
addr8 | 2 | 4 | NZ |
| (stack,s),y | B3 |
addr8 | 2 | 7 | NZ |
CMP
Compare accumulator
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | C9 |
imm16 | 3 | 3 | NZ |
| (indirect) | D2 |
addr8 | 2 | 5 | NZ |
| [indirect] | C7 |
addr8 | 2 | 6 | NZ |
| [indirect],y | D7 |
addr8 | 2 | 6 | NZ |
| long | CF |
addr24 | 4 | 5 | NZ |
| long,x | DF |
addr24 | 4 | 5 | NZ |
| stack,s | C3 |
addr8 | 2 | 4 | NZ |
| (stack,s),y | D3 |
addr8 | 2 | 7 | NZ |
SBC
Subtract with carry
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | E9 |
imm16 | 3 | 3 | NZ |
| (indirect) | F2 |
addr8 | 2 | 5 | NZ |
| [indirect] | E7 |
addr8 | 2 | 6 | NZ |
| [indirect],y | F7 |
addr8 | 2 | 6 | NZ |
| long | EF |
addr24 | 4 | 5 | NZ |
| long,x | FF |
addr24 | 4 | 5 | NZ |
| stack,s | E3 |
addr8 | 2 | 4 | NZ |
| (stack,s),y | F3 |
addr8 | 2 | 7 | NZ |
STA
Store accumulator
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| (indirect) | 92 |
addr8 | 2 | 5 | — |
| [indirect] | 87 |
addr8 | 2 | 6 | — |
| [indirect],y | 97 |
addr8 | 2 | 6 | — |
| long | 8F |
addr24 | 4 | 5 | — |
| long,x | 9F |
addr24 | 4 | 5 | — |
| stack,s | 83 |
addr8 | 2 | 4 | — |
| (stack,s),y | 93 |
addr8 | 2 | 7 | — |
LDX
Load X register
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | A2 |
imm16 | 3 | 3 | NZ |
LDY
Load Y register
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | A0 |
imm16 | 3 | 3 | NZ |
CPX
Compare X
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | E0 |
imm16 | 3 | 3 | NZC |
CPY
Compare Y
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate16 | C0 |
imm16 | 3 | 3 | NZC |
BIT
Bit test
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate | 89 |
imm8 | 2 | 2 | Z |
| immediate16 | 89 |
imm16 | 3 | 3 | Z |
| zeropage,x | 34 |
addr8 | 2 | 4 | NZV |
| absolute,x | 3C |
addr16 | 3 | 4 | NZV |
STZ
Store zero
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| zeropage | 64 |
addr8 | 2 | 3 | — |
| zeropage,x | 74 |
addr8 | 2 | 4 | — |
| absolute | 9C |
addr16 | 3 | 4 | — |
| absolute,x | 9E |
addr16 | 3 | 5 | — |
INC
Increment
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| accumulator | 1A |
— | 1 | 2 | NZ |
DEC
Decrement
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| accumulator | 3A |
— | 1 | 2 | NZ |
TRB
Test and reset bits
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| zeropage | 14 |
addr8 | 2 | 5 | Z |
| absolute | 1C |
addr16 | 3 | 6 | Z |
TSB
Test and set bits
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| zeropage | 04 |
addr8 | 2 | 5 | Z |
| absolute | 0C |
addr16 | 3 | 6 | Z |
JMP
Jump
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| long | 5C |
addr24 | 4 | 4 | — |
| [absolute] | DC |
addr16 | 3 | 6 | — |
| (absolute,x) | 7C |
addr16 | 3 | 6 | — |
JML
Jump long
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| long | 5C |
addr24 | 4 | 4 | — |
| [absolute] | DC |
addr16 | 3 | 6 | — |
JSR
Jump to subroutine
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| (absolute,x) | FC |
addr16 | 3 | 8 | — |
JSL
Jump to subroutine long
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| long | 22 |
addr24 | 4 | 8 | — |
PEA
Push effective absolute address
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| absolute | F4 |
addr16 | 3 | 5 | — |
PEI
Push effective indirect address
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| (indirect) | D4 |
addr8 | 2 | 6 | — |
PER
Push effective relative address
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| relative16 | 62 |
rel16 | 3 | 6 | — |
BRL
Branch long
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| relative16 | 82 |
rel16 | 3 | 4 | — |
BRA
Branch always
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| relative | 80 |
rel8 | 2 | 3 | — |
REP
Reset status bits
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate | C2 |
imm8 | 2 | 3 | NVMXDIZC |
SEP
Set status bits
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| immediate | E2 |
imm8 | 2 | 3 | NVMXDIZC |
TCD
Transfer C to direct page
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 5B |
— | 1 | 2 | NZ |
TDC
Transfer direct page to C
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 7B |
— | 1 | 2 | NZ |
TCS
Transfer C to stack pointer
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 1B |
— | 1 | 2 | — |
TSC
Transfer stack pointer to C
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 3B |
— | 1 | 2 | NZ |
TXY
Transfer X to Y
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 9B |
— | 1 | 2 | NZ |
TYX
Transfer Y to X
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | BB |
— | 1 | 2 | NZ |
XBA
Exchange B and A
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | EB |
— | 1 | 3 | NZ |
XCE
Exchange carry and emulation
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | FB |
— | 1 | 2 | C |
PHB
Push data bank
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 8B |
— | 1 | 3 | — |
PLB
Pull data bank
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | AB |
— | 1 | 4 | NZ |
PHD
Push direct page
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 0B |
— | 1 | 4 | — |
PLD
Pull direct page
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 2B |
— | 1 | 5 | NZ |
PHK
Push program bank
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 4B |
— | 1 | 3 | — |
PHX
Push X
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | DA |
— | 1 | 3 | — |
PHY
Push Y
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 5A |
— | 1 | 3 | — |
PLX
Pull X
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | FA |
— | 1 | 4 | NZ |
PLY
Pull Y
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 7A |
— | 1 | 4 | NZ |
WAI
Wait for interrupt
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | CB |
— | 1 | 3 | — |
STP
Stop the clock
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | DB |
— | 1 | 3 | — |
RTL
Return from subroutine long
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| implied | 6B |
— | 1 | 6 | — |
MVN
Block move next
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| block-move | 54 |
addr8, addr8 | 3 | 7 | — |
MVP
Block move previous
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| block-move | 44 |
addr8, addr8 | 3 | 7 | — |
COP
Co-processor enable
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| signature | 02 |
imm8 | 2 | 7 | — |
WDM
Reserved (no-op)
| Mode | Opcode | Operands | Bytes | Cycles | Flags |
|---|---|---|---|---|---|
| signature | 42 |
imm8 | 2 | 2 | — |
Machines
Apple II, Nintendo Super Nintendo
Sources
Encodings on this page were taken from:
- Programming the 65816 — Eyes and Lichty, 1986