6502 Instruction Set
From 8BitDev.org - Atari 7800 Development Wiki
Instruction | Hex | Cycles | Bytes | Description | Addressing |
---|---|---|---|---|---|
ADC #n | 69 | 2 | 2 | Add with carry to A | Immediate |
ADC nn | 6D | 4 | 3 | Add with carry to A | Absolute |
ADC n | 65 | 3 | 2 | Add with carry to A | Zero Page |
ADC (n,X) | 61 | 6 | 2 | Add with carry to A | Indirect X |
ADC (n),Y | 71 | 5+ | 2 | Add with carry to A | Indirect Y |
ADC n,X | 75 | 4 | 2 | Add with carry to A | Zero Page X |
ADC nn,X | 7D | 4+ | 3 | Add with carry to A | Absolute X |
ADC nn,Y | 79 | 4+ | 3 | Add with carry to A | Absolute Y |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
AND #n | 29 | 2 | 2 | AND to A | Immediate |
AND nn | 2D | 4 | 3 | AND to A | Absolute |
AND n | 25 | 3 | 2 | AND to A | Zero Page |
AND (n,X) | 21 | 6 | 2 | AND to A | Indirect X |
AND (n),Y | 31 | 5+ | 2 | AND to A | Indirect Y |
AND n,X | 35 | 4 | 2 | AND to A | Zero Page X |
AND nn,X | 3D | 4+ | 3 | AND to A | Absolute X |
AND nn,Y | 39 | 4+ | 3 | AND to A | Absolute Y |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
ASL | 0A | 2 | 2 | Arithmetic Shift Left | Immediate |
ASL nn | 0E | 4 | 3 | Arithmetic Shift Left | Absolute |
ASL n | 06 | 3 | 2 | Arithmetic Shift Left | Zero Page |
ASL n,X | 16 | 4 | 2 | Arithmetic Shift Left | Zero Page X |
ASL nn,X | 1E | 4+ | 3 | Arithmetic Shift Left | Absolute X |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
BCC n | 90 | 2+ | 2 | Branch if carry clear (C=0) | Relative |
BCS n | B0 | 2+ | 2 | Branch if carry set (C=1) | Relative |
BEQ n | F0 | 2+ | 2 | Branch if equal (Z=1) | Relative |
BNE n | D0 | 2+ | 2 | Branch if not equal (Z=0) | Relative |
BMI n | 30 | 2+ | 2 | Branch if minus (N=1) | Relative |
BPL n | 10 | 2+ | 2 | Branch if plus (N=0) | Relative |
BVC n | 50 | 2+ | 2 | Branch if overflow clear (V=0) | Relative |
BVS n | 70 | 2+ | 2 | Branch if overflow set (V=1) | Relative |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
BIT nn | 2C | 4 | 3 | AND with A (A unchanged) | Absolute |
BIT n | 24 | 3 | 2 | AND with A (A unchanged) | Absolute |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
BRK | 00 | 7 | 1 | Break (force interrupt) | None |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
CLC | 18 | 2 | 1 | Clear Carry | None |
CLD | D8 | 2 | 1 | Clear decimal mode | None |
CLI | 58 | 2 | 1 | Clear IRQ disable | None |
CLV | B8 | 2 | 1 | Clear overflow | None |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
CMP #n | C9 | 2 | 2 | Compare with A | Immediate |
CMP nn | CD | 4 | 3 | Compare with A | Absolute |
CMP n | C5 | 3 | 2 | Compare with A | Zero Page |
CMP (n,X) | C1 | 6 | 2 | Compare with A | Indirect X |
CMP (n),Y | D1 | 5+ | 2 | Compare with A | Zero Page X |
CMP n,X | D5 | 4 | 2 | Compare with A | Absolute X |
CMP nn,X | DD | 4+ | 3 | Compare with A | Absolute X |
CMP nn,Y | D9 | 4+ | 3 | Compare with A | Absolute Y |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
CPX #n | E0 | 2 | 2 | Compare with X | Immediate |
CPX nn | EC | 4 | 3 | Compare with X | Absolute |
CPX n | E4 | 3 | 2 | Compare with X | Zero Page |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
CPY #n | C0 | 2 | 2 | Compare with Y | Immediate |
CPY nn | CC | 4 | 3 | Compare with Y | Absolute |
CPY n | C4 | 3 | 2 | Compare with Y | Zero Page |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
DEC nn | CE | 6 | 3 | Decrement by one | Absolute |
DEC n | C6 | 5 | 2 | Decrement by one | Zero Page |
DEC n,X | D6 | 6 | 2 | Decrement by one | Zero Page X |
DEC nn,X | DE | 7 | 3 | Decrement by one | Absolute X |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
DEX | CA | 2 | 1 | Decrement X by one | None |
DEY | 88 | 2 | 1 | Decrement Y by one | None |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
EOR #n | 49 | 2 | 2 | XOR to A | Immediate |
EOR nn | 4D | 4 | 3 | XOR to A | Absolute |
EOR n | 45 | 3 | 2 | XOR to A | Zero Page |
EOR (n,X) | 41 | 6 | 2 | XOR to A | Indirect X |
EOR (n),Y | 51 | 5+ | 2 | XOR to A | Indirect Y |
EOR n,X | 55 | 4 | 2 | XOR to A | Zero Page X |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
INC nn | EE | 6 | 3 | Increment by one | Absolute |
INC n | E6 | 5 | 2 | Increment by one | Zero Page |
INC n,X | F6 | 6 | 2 | Increment by one | Zero Page X |
INC nn,X | FE | 7 | 3 | Increment by one | Absolute X |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
INX | E8 | 2 | 1 | Increment X by one | None |
INY | C8 | 2 | 1 | Increment Y by one | None |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
JMP nn | 4C | 3 | 3 | Jump to new location | Absolute |
JMP (nn) | 6C | 5 | 3 | Jump to new location | Indirect |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
JSR nn | 20 | 6 | 3 | Jump to subroutine | Absolute |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
LDA #n | A9 | 2 | 2 | Load A | Immediate |
LDA nn | AD | 4 | 3 | Load A | Absolute |
LDA n | A5 | 3 | 2 | Load A | Zero Page |
LDA (n,X) | A1 | 6 | 2 | Load A | Indirect X |
LDA (n),Y | B1 | 5+ | 2 | Load A | Indirect Y |
LDA n,X | B5 | 4 | 2 | Load A | Zero Page X |
LDA nn,X | BD | 4+ | 3 | Load A | Absolute X |
LDA nn,Y | B9 | 4+ | 3 | Load A | Absolute Y |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
LDX #n | A2 | 2 | 2 | Load X | Immediate |
LDX nn | AE | 4 | 3 | Load X | Absolute |
LDX n | A6 | 3 | 2 | Load X | Zero Page |
LDX nn,Y | BE | 4+ | 3 | Load X | Absolute Y |
LDX n,Y | B6 | 4 | 2 | Load X | Zero Page Y |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
LDY #n | A0 | 2 | 2 | Load Y | Immediate |
LDY nn | AC | 4 | 3 | Load Y | Absolute |
LDY n | A4 | 3 | 2 | Load Y | Zero Page |
LDY n,X | B4 | 4 | 2 | Load Y | Zero Page X |
LDY nn,X | BC | 4+ | 3 | Load Y | Absolute X |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
LSR nn | 4E | 6 | 3 | Logical shift right | Absolute |
LSR n | 46 | 5 | 2 | Logical shift right | Zero Page |
LSR | 4A | 2 | 1 | Logical shift right | Accumulator |
LSR n,X | 56 | 6 | 2 | Logical shift right | Zero Page X |
LSR nn,X | 5E | 7 | 3 | Logical shift right | Absolute X |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
NOP | EA | 2 | 1 | No operation | None |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
ORA #n | 09 | 2 | 2 | OR to A | Immediate |
ORA nn | 0D | 4 | 3 | OR to A | Absolute |
ORA n | 05 | 3 | 2 | OR to A | Zero Page |
ORA (n,X) | 01 | 6 | 2 | OR to A | Indirect X |
ORA (n),Y | 11 | 5+ | 2 | OR to A | Indirect Y |
ORA n,X | 15 | 4 | 2 | OR to A | Zero Page X |
ORA nn,X | 1D | 4+ | 3 | OR to A | Absolute X |
ORA nn,Y | 19 | 4+ | 3 | OR to A | Absolute Y |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
PHA | 48 | 3 | 1 | Push A onto the stack | None |
PHP | 08 | 3 | 1 | Push the processor state onto the stack | None |
PLA | 68 | 4 | 1 | Pull/Pop A from the stack | None |
PLP | 28 | 4 | 1 | Pull/Pop the processor state from the stack | None |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
ROL nn | 2E | 6 | 3 | Rotate left through carry | Absolute |
ROL n | 26 | 5 | 2 | Rotate left through carry | Zero Page |
ROL | 2A | 2 | 1 | Rotate left through carry | Accumulator |
ROL n,X | 36 | 6 | 2 | Rotate left through carry | Zero Page X |
ROL nn,X | 3E | 7 | 3 | Rotate left through carry | Absolute X |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
RTI | 40 | 6 | 1 | Return from interrupt | None |
RTS | 60 | 6 | 1 | Return from subroutine | None |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
SBC #n | E9 | 2 | 2 | Subtract with borrow from A | Immediate |
SBC nn | ED | 4 | 3 | Subtract with borrow from A | Absolute |
SBC n | E5 | 3 | 2 | Subtract with borrow from A | Zero Page |
SBC (n,X) | E1 | 6 | 2 | Subtract with borrow from A | Indirect X |
SBC (n),Y | F1 | 5+ | 2 | Subtract with borrow from A | Indirect Y |
SBC n,X | F5 | 4 | 2 | Subtract with borrow from A | Zero Page X |
SBC nn,X | FD | 4+ | 3 | Subtract with borrow from A | Absolute X |
SBC nn,Y | F9 | 4+ | 3 | Subtract with borrow from A | Absolute Y |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
SEC | 38 | 2 | 1 | Set carry | None |
SED | F8 | 2 | 1 | Set decimal mode | None |
SEI | 78 | 2 | 1 | Set IRQ disable | None |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
STA nn | 8D | 4 | 3 | Store A | Absolute |
STA n | 85 | 3 | 2 | Store A | Zero Page |
STA (n,X) | 81 | 6 | 2 | Store A | Indirect X |
STA (n),Y | 91 | 6 | 2 | Store A | Indirect Y |
STA n,X | 95 | 4 | 2 | Store A | Zero Page X |
STA nn,X | 9D | 5 | 3 | Store A | Absolute X |
STA nn,Y | 99 | 5 | 3 | Store A | Absolute Y |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
STX nn | 8E | 4 | 3 | Store X | Absolute |
STX n | 86 | 3 | 2 | Store X | Zero Page |
STX n,Y | 96 | 4 | 2 | Store X | Zero Page Y |
STY nn | 8C | 4 | 3 | Store Y | Absolute |
STY n | 84 | 3 | 2 | Store Y | Zero Page |
STY n,X | 94 | 4 | 2 | Store Y | Zero Page X |
Instruction | Hex | Cycles | Bytes | Description | Addressing |
TAX | AA | 2 | 1 | Transfer A to X | None |
TAY | A8 | 2 | 1 | Transfer A to Y | None |
TSX | BA | 2 | 1 | Transfer stack to X | None |
TXA | 8A | 2 | 1 | Transfer X to A | None |
TXS | 9A | 2 | 1 | Transfer X to stack | None |
TYA | 98 | 2 | 1 | Transfer Y to A | None |