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