Reference

MOS 6502

56 mnemonics, 151 encoded forms, operands little-endian. Generated from crates/isa/src/mos6502.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.

LDA

Load accumulator

Mode Opcode Operands Bytes Cycles Flags
immediate A9 imm8 2 2 NZ
zeropage A5 addr8 2 3 NZ
zeropage,x B5 addr8 2 4 NZ
absolute AD addr16 3 4 NZ
absolute,x BD addr16 3 4 +p NZ
absolute,y B9 addr16 3 4 +p NZ
(indirect,x) A1 addr8 2 6 NZ
(indirect),y B1 addr8 2 5 +p NZ

LDX

Load X register

Mode Opcode Operands Bytes Cycles Flags
immediate A2 imm8 2 2 NZ
zeropage A6 addr8 2 3 NZ
zeropage,y B6 addr8 2 4 NZ
absolute AE addr16 3 4 NZ
absolute,y BE addr16 3 4 +p NZ

LDY

Load Y register

Mode Opcode Operands Bytes Cycles Flags
immediate A0 imm8 2 2 NZ
zeropage A4 addr8 2 3 NZ
zeropage,x B4 addr8 2 4 NZ
absolute AC addr16 3 4 NZ
absolute,x BC addr16 3 4 +p NZ

STA

Store accumulator

Mode Opcode Operands Bytes Cycles Flags
zeropage 85 addr8 2 3
zeropage,x 95 addr8 2 4
absolute 8D addr16 3 4
absolute,x 9D addr16 3 5
absolute,y 99 addr16 3 5
(indirect,x) 81 addr8 2 6
(indirect),y 91 addr8 2 6

STX

Store X register

Mode Opcode Operands Bytes Cycles Flags
zeropage 86 addr8 2 3
zeropage,y 96 addr8 2 4
absolute 8E addr16 3 4

STY

Store Y register

Mode Opcode Operands Bytes Cycles Flags
zeropage 84 addr8 2 3
zeropage,x 94 addr8 2 4
absolute 8C addr16 3 4

TAX

Transfer accumulator to X

Mode Opcode Operands Bytes Cycles Flags
implied AA 1 2 NZ

TAY

Transfer accumulator to Y

Mode Opcode Operands Bytes Cycles Flags
implied A8 1 2 NZ

TXA

Transfer X to accumulator

Mode Opcode Operands Bytes Cycles Flags
implied 8A 1 2 NZ

TYA

Transfer Y to accumulator

Mode Opcode Operands Bytes Cycles Flags
implied 98 1 2 NZ

TSX

Transfer stack pointer to X

Mode Opcode Operands Bytes Cycles Flags
implied BA 1 2 NZ

TXS

Transfer X to stack pointer

Mode Opcode Operands Bytes Cycles Flags
implied 9A 1 2

PHA

Push accumulator

Mode Opcode Operands Bytes Cycles Flags
implied 48 1 3

PLA

Pull accumulator

Mode Opcode Operands Bytes Cycles Flags
implied 68 1 4 NZ

PHP

Push processor status

Mode Opcode Operands Bytes Cycles Flags
implied 08 1 3

PLP

Pull processor status

Mode Opcode Operands Bytes Cycles Flags
implied 28 1 4 NVDIZC

INX

Increment X

Mode Opcode Operands Bytes Cycles Flags
implied E8 1 2 NZ

INY

Increment Y

Mode Opcode Operands Bytes Cycles Flags
implied C8 1 2 NZ

DEX

Decrement X

Mode Opcode Operands Bytes Cycles Flags
implied CA 1 2 NZ

DEY

Decrement Y

Mode Opcode Operands Bytes Cycles Flags
implied 88 1 2 NZ

INC

Increment memory

Mode Opcode Operands Bytes Cycles Flags
zeropage E6 addr8 2 5 NZ
zeropage,x F6 addr8 2 6 NZ
absolute EE addr16 3 6 NZ
absolute,x FE addr16 3 7 NZ

DEC

Decrement memory

Mode Opcode Operands Bytes Cycles Flags
zeropage C6 addr8 2 5 NZ
zeropage,x D6 addr8 2 6 NZ
absolute CE addr16 3 6 NZ
absolute,x DE addr16 3 7 NZ

ADC

Add with carry

Mode Opcode Operands Bytes Cycles Flags
immediate 69 imm8 2 2 NZCV
zeropage 65 addr8 2 3 NZCV
zeropage,x 75 addr8 2 4 NZCV
absolute 6D addr16 3 4 NZCV
absolute,x 7D addr16 3 4 +p NZCV
absolute,y 79 addr16 3 4 +p NZCV
(indirect,x) 61 addr8 2 6 NZCV
(indirect),y 71 addr8 2 5 +p NZCV

SBC

Subtract with carry

Mode Opcode Operands Bytes Cycles Flags
immediate E9 imm8 2 2 NZCV
zeropage E5 addr8 2 3 NZCV
zeropage,x F5 addr8 2 4 NZCV
absolute ED addr16 3 4 NZCV
absolute,x FD addr16 3 4 +p NZCV
absolute,y F9 addr16 3 4 +p NZCV
(indirect,x) E1 addr8 2 6 NZCV
(indirect),y F1 addr8 2 5 +p NZCV

AND

Logical AND

Mode Opcode Operands Bytes Cycles Flags
immediate 29 imm8 2 2 NZ
zeropage 25 addr8 2 3 NZ
zeropage,x 35 addr8 2 4 NZ
absolute 2D addr16 3 4 NZ
absolute,x 3D addr16 3 4 +p NZ
absolute,y 39 addr16 3 4 +p NZ
(indirect,x) 21 addr8 2 6 NZ
(indirect),y 31 addr8 2 5 +p NZ

ORA

Logical inclusive OR

Mode Opcode Operands Bytes Cycles Flags
immediate 09 imm8 2 2 NZ
zeropage 05 addr8 2 3 NZ
zeropage,x 15 addr8 2 4 NZ
absolute 0D addr16 3 4 NZ
absolute,x 1D addr16 3 4 +p NZ
absolute,y 19 addr16 3 4 +p NZ
(indirect,x) 01 addr8 2 6 NZ
(indirect),y 11 addr8 2 5 +p NZ

EOR

Exclusive OR

Mode Opcode Operands Bytes Cycles Flags
immediate 49 imm8 2 2 NZ
zeropage 45 addr8 2 3 NZ
zeropage,x 55 addr8 2 4 NZ
absolute 4D addr16 3 4 NZ
absolute,x 5D addr16 3 4 +p NZ
absolute,y 59 addr16 3 4 +p NZ
(indirect,x) 41 addr8 2 6 NZ
(indirect),y 51 addr8 2 5 +p NZ

CMP

Compare accumulator

Mode Opcode Operands Bytes Cycles Flags
immediate C9 imm8 2 2 NZC
zeropage C5 addr8 2 3 NZC
zeropage,x D5 addr8 2 4 NZC
absolute CD addr16 3 4 NZC
absolute,x DD addr16 3 4 +p NZC
absolute,y D9 addr16 3 4 +p NZC
(indirect,x) C1 addr8 2 6 NZC
(indirect),y D1 addr8 2 5 +p NZC

CPX

Compare X register

Mode Opcode Operands Bytes Cycles Flags
immediate E0 imm8 2 2 NZC
zeropage E4 addr8 2 3 NZC
absolute EC addr16 3 4 NZC

CPY

Compare Y register

Mode Opcode Operands Bytes Cycles Flags
immediate C0 imm8 2 2 NZC
zeropage C4 addr8 2 3 NZC
absolute CC addr16 3 4 NZC

BIT

Bit test

Mode Opcode Operands Bytes Cycles Flags
zeropage 24 addr8 2 3 NZV
absolute 2C addr16 3 4 NZV

ASL

Arithmetic shift left

Mode Opcode Operands Bytes Cycles Flags
accumulator 0A 1 2 NZC
zeropage 06 addr8 2 5 NZC
zeropage,x 16 addr8 2 6 NZC
absolute 0E addr16 3 6 NZC
absolute,x 1E addr16 3 7 NZC

LSR

Logical shift right

Mode Opcode Operands Bytes Cycles Flags
accumulator 4A 1 2 NZC
zeropage 46 addr8 2 5 NZC
zeropage,x 56 addr8 2 6 NZC
absolute 4E addr16 3 6 NZC
absolute,x 5E addr16 3 7 NZC

ROL

Rotate left

Mode Opcode Operands Bytes Cycles Flags
accumulator 2A 1 2 NZC
zeropage 26 addr8 2 5 NZC
zeropage,x 36 addr8 2 6 NZC
absolute 2E addr16 3 6 NZC
absolute,x 3E addr16 3 7 NZC

ROR

Rotate right

Mode Opcode Operands Bytes Cycles Flags
accumulator 6A 1 2 NZC
zeropage 66 addr8 2 5 NZC
zeropage,x 76 addr8 2 6 NZC
absolute 6E addr16 3 6 NZC
absolute,x 7E addr16 3 7 NZC

JMP

Jump

Mode Opcode Operands Bytes Cycles Flags
absolute 4C addr16 3 3
indirect 6C addr16 3 5

JSR

Jump to subroutine

Mode Opcode Operands Bytes Cycles Flags
absolute 20 addr16 3 6

RTS

Return from subroutine

Mode Opcode Operands Bytes Cycles Flags
implied 60 1 6

RTI

Return from interrupt

Mode Opcode Operands Bytes Cycles Flags
implied 40 1 6 NVDIZC

BRK

Force interrupt

Mode Opcode Operands Bytes Cycles Flags
implied 00 1 7 I

NOP

No operation

Mode Opcode Operands Bytes Cycles Flags
implied EA 1 2

BCC

Branch if carry clear

Mode Opcode Operands Bytes Cycles Flags
relative 90 rel8 2 2 +t +p

BCS

Branch if carry set

Mode Opcode Operands Bytes Cycles Flags
relative B0 rel8 2 2 +t +p

BEQ

Branch if equal

Mode Opcode Operands Bytes Cycles Flags
relative F0 rel8 2 2 +t +p

BMI

Branch if minus

Mode Opcode Operands Bytes Cycles Flags
relative 30 rel8 2 2 +t +p

BNE

Branch if not equal

Mode Opcode Operands Bytes Cycles Flags
relative D0 rel8 2 2 +t +p

BPL

Branch if positive

Mode Opcode Operands Bytes Cycles Flags
relative 10 rel8 2 2 +t +p

BVC

Branch if overflow clear

Mode Opcode Operands Bytes Cycles Flags
relative 50 rel8 2 2 +t +p

BVS

Branch if overflow set

Mode Opcode Operands Bytes Cycles Flags
relative 70 rel8 2 2 +t +p

CLC

Clear carry

Mode Opcode Operands Bytes Cycles Flags
implied 18 1 2 C

SEC

Set carry

Mode Opcode Operands Bytes Cycles Flags
implied 38 1 2 C

CLI

Clear interrupt disable

Mode Opcode Operands Bytes Cycles Flags
implied 58 1 2 I

SEI

Set interrupt disable

Mode Opcode Operands Bytes Cycles Flags
implied 78 1 2 I

CLD

Clear decimal

Mode Opcode Operands Bytes Cycles Flags
implied D8 1 2 D

SED

Set decimal

Mode Opcode Operands Bytes Cycles Flags
implied F8 1 2 D

CLV

Clear overflow

Mode Opcode Operands Bytes Cycles Flags
implied B8 1 2 V

Machines

Nintendo Entertainment System, Apple II, Atari 8-bit, BBC Micro, Commodore VIC-20, Commodore PET, MOS KIM-1, Oric Atmos, Commodore 64, Commodore 128

Sources

Encodings on this page were taken from:

  • 6502 User’s Manual — MOS Technology, 1984
  • Programming the 6502 — Rodnay Zaks, 1983