6502 Opcodes
Jump to navigation
Jump to search
This is a list of Opcodes used by the 6502 Microprocessor.
Logical Order, Grouped
|
Storage
Math |
Bitwise
Branch
Jump |
Registers
Stack
System |
Alphabetical, Grouped
|
A B
C |
D E
I J L N
O
|
P
R
S
T |
Alphabetical, Expanded
|
|
|
Hex Order
|
|
|
Simplified
- BRK/JSR/RTI/RTS: 0II0 0000 (II = BRK (0), JSR (1), RTI (2), or RTS (3))
- BIT: 0010 M100 (M = Zero Page (0) or Absolute (1))
- JMP: 01M0 1100 (M = Absolute (0) or Indirect (1))
- Unused unless listed above: 0??? ?100
- Branch N/V/C/Z: MMS1 0000 (MM = Flag Type, S = Status)
- PHP/PLP/PHA/PLA: 0AP0 1000 (A = Processor Status (0) or Accumulator (1), P = Push (0) or Pull (1))
- CL?/SE?: MMS1 1000 (MM = Flag Type (C/I/V/D), S = Status; SEV doesn't exist, and CLV is set to B8 instead)
- INY/INX: 11V0 1000
- STY/LDY: 10LM MM00
- CPY/CPX: 11VM MM00
- Modes:
- 000 - Immediate: M = Op1 (not used for STX)
- 001 - Zero Page: M = (Op1)
- 010 - Accumulator: M = A for LDY (88 is DEY instead, INY/INX overrides this)
- 011 - Absolute: M = (Op2)
- 100 - not used because of Branch stuff
- 101 - Zero Page, X: (X+Op1) (only used for STY/LDY; D4 and F4 are blank)
- 110 - Accumulator: M = A for STY (B8, D8, and F8 are all used for flag stuff instead)
- 111 - Absolute, X: (Op2+X) (only used for LDY; 9C, DC, and FC are all blank)
- OR/AND/EOR/ADC A, M: 0CCM MM01 (CC = Instruction, MMM = Mode)
- ST/LD/CMP/SBC A, M: 1CCM MM01
- Modes:
- 000 - (Indirect, X): M = ((X+Op1))
- 001 - Zero Page: M = (Op1)
- 010 - Immediate: M = Op1
- 011 - Absolute: M = (Op2)
- 100 - (Indirect), Y: M = (Y+(Op1))
- 101 - Zero Page, X: (X+Op1)
- 11X - Absolute, Y/X: (Op2+Y/X)
- ASL/ROL/LSR/ROR: 0DRM MM10 (D = Direction: Left = 0, Right = 1; R = Shift (0) or Rotate (1); MMM = Mode)
- STX/LDX: 10LM MM10
- DEC/INC: 11PM MM10
- Modes:
- 000 - generally unused
- 001 - Zero Page: M = (Op1)
- 010 - Accumulator: M = A (A substituted with X in DEC/INC instead)
- 011 - Absolute: M = (Op2)
- 100 - never used
- 101 - Zero Page, X: (X+Op1) (X substituted with Y in STX/LDX)
- 111 - Absolute, X: (Op2+X) (X substituted with Y in STX/LDX)
- 1010 0010 - LDX Immediate; noted because otherwise, ???? 0010 is never used
- ???? ??11 - always never used
Execution Time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Abso- |
| ADC | . | 2 | 3 | 4 | . | 4 | 4* | 4* | . | . | 6 | 5* | . |
| AND | . | 2 | 3 | 4 | . | 4 | 4* | 4* | . | . | 6 | 5* | . |
| ASL | 2 | 5 | 6 | . | 6 | 7 | . | . | . | . | . | . | |
| BCC | . | . | . | . | . | . | . | . | . | 2† | . | . | . |
| BCS | . | . | . | . | . | . | . | . | . | 2† | . | . | . |
| BEQ | . | . | . | . | . | . | . | . | . | 2† | . | . | . |
| BIT | . | . | 3 | . | . | 4 | . | . | . | . | . | . | . |
| BMI | . | . | . | . | . | . | . | . | . | 2† | . | . | . |
| BNE | . | . | . | . | . | . | . | . | . | 2† | . | . | . |
| BPL | . | . | . | . | . | . | . | . | . | 2† | . | . | . |
| BRK | . | . | . | . | . | . | . | . | 7 | . | . | . | . |
| BVC | . | . | . | . | . | . | . | . | . | 2† | . | . | . |
| BVS | . | . | . | . | . | . | . | . | . | 2† | . | . | . |
| CLC | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| CLD | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| CLI | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| CLV | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| CMP | . | 2 | 3 | 4 | . | 4 | 4* | 4* | . | . | 6 | 5* | . |
| CPX | . | 2 | 3 | . | . | 4 | . | . | . | . | . | . | . |
| CPY | . | 2 | 3 | . | . | 4 | . | . | . | . | . | . | . |
| DEC | . | . | 5 | 6 | . | 6 | 7 | . | . | . | . | . | . |
| DEX | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| DEY | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| EOR | . | 2 | 3 | 4 | . | 4 | 4* | 4* | . | . | 6 | 5* | . |
| INC | . | . | 5 | 6 | . | 6 | 7 | . | . | . | . | . | . |
| INX | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| INY | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| JMP | . | . | . | . | . | 3 | . | . | . | . | . | . | 5 |
| JSR | . | . | . | . | . | 6 | . | . | . | . | . | . | . |
| LDA | . | 2 | 3 | 4 | . | 4 | 4* | 4* | . | . | 6 | 5* | . |
| LDX | . | 2 | 3 | . | 4 | 4 | . | 4* | . | . | . | . | . |
| LDY | . | 2 | 3 | 4 | . | 4 | 4* | . | . | . | . | . | . |
| LSR | 2 | . | 5 | 6 | . | 6 | 7 | . | . | . | . | . | . |
| NOP | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| ORO | . | 2 | 3 | 4 | . | 4 | 4* | 4* | . | . | 6 | 5* | . |
| PHA | . | . | . | . | . | . | . | . | 3 | . | . | . | . |
| PHP | . | . | . | . | . | . | . | . | 3 | . | . | . | . |
| PLA | . | . | . | . | . | . | . | . | 4 | . | . | . | . |
| PLP | . | . | . | . | . | . | . | . | 4 | . | . | . | . |
| ROL | 2 | . | 5 | 6 | . | 6 | 7 | . | . | . | . | . | . |
| ROR | 2 | . | 5 | 6 | . | 6 | 7 | . | . | . | . | . | . |
| RTI | . | . | . | . | . | . | . | . | 6 | . | . | . | . |
| RTS | . | . | . | . | . | . | . | . | 6 | . | . | . | . |
| SBC | . | 2 | 3 | 4 | . | 4 | 4* | 4* | . | . | 6 | 5* | . |
| SEC | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| SED | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| SEI | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| STA | . | . | 3 | 4 | . | 4 | 5 | 5 | . | . | 6 | 6 | . |
| STX | . | . | 3 | . | 4 | 4 | . | . | . | . | . | . | . |
| STY | . | . | 3 | 4 | . | 4 | . | . | . | . | . | . | . |
| TAX | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| TAY | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| TSX | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| TXA | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| TXS | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
| TYT | . | . | . | . | . | . | . | . | 2 | . | . | . | . |
* Add one cycle if indexing across page boundary
† Add one cycle if branch is taken, and one additional if branching operation crosses page boundary