Register
| Name | Short | Length |
|---|---|---|
| Accumulator | A (B, C) | 8/16 |
| Index register (X) | X | 8/16 |
| Index register (Y) | Y | 8/16 |
| Stack pointer | SP | 16 |
| Program counter | PC | 16 |
| Processor status | P | 8 |
| Direct pointer | D | 16 |
| Program bank register | PB (K) | 8 |
| Data bank register | DB (B) | 8 |
Status flag
| bit | Name | Description |
|---|---|---|
| 7 | N | Negative flag |
| 6 | V | Overflow flag |
| 5 | M | Memory select (0=16 / 1=8) |
| 5 | R | (Emulation mode) Reserved (always 1) |
| 4 | X | Index register select (0=16 / 1=8) |
| 4 | B | (Emulation mode) Break flag (0=IRQ / 1=BRK) |
| 3 | D | Decimal mode (0=Binary / 1=Decimal) |
| 2 | I | IRQ disable (0=IRQ Enable / 1=IRQ Disable) |
| 1 | Z | Zero flag |
| 0 | C | Carry flag |
| - | E | Emulation flag (0=Native / 1=Emulation) |
Addressing mode
| Name | Short | Description | Syntax |
|---|---|---|---|
| Implied | |||
| Accumulator | A | ||
| Stack | S | ||
| Immediate | #imm | operand | #$01 |
| Direct page (Zero page) | dp | [D + dp] | $01 |
| Direct page Indexed, X | dp,X | [D + dp + X] | $01,X |
| Direct page Indexed, Y | dp,Y | [D + dp + Y] | $01,Y |
| Direct page Indirect | (dp) | [DB + [D + dp]] | ($01) |
| Direct page Indexed Indirect, X | (dp,X) | [DB + [D + dp + X]] | ($01,X) |
| Direct page Indirect Indexed, Y | (dp),Y | [DB + [D + dp] + Y] | ($01),Y |
| Direct page Indirect Long | [dp] | [[D + dp]] | [$01] |
| Direct page Indirect Long Indexed, Y | [dp],Y | [[D + dp] + Y] | [$01],Y |
| Absolute | abs | [DB + abs] | $0123 |
| Absolute Indexed, X | abs,X | [DB + abs + X] | $0123,X |
| Absolute Indexed, Y | abs,Y | [DB + abs + Y] | $0123,Y |
| Absolute Indirect | (abs) | [[PB + abs]] | ($0123) |
| Absolute Indexed Indirect | (abs,X) | [[PB + abs + X]] | ($0123,X) |
| Absolute Indirect Long | [abs] | [[abs]] | [$0123] |
| Absolute Long | long | [long] | $012345 |
| Absolute Long Indexed, X | long,X | [long + X] | $012345,X |
| Relative | rel | [PB + PC + rel] | #$01 |
| Relative Long | rlong | [PB + PC + rlong] | #$0123 |
| Stack Relative | sr,S | [SP + sr] | $01,S |
| Stack Relative Indirect Indexed, Y | (sr,S),Y | [DB + [SP + sr] + Y] | ($01,S),Y |
| Block Move | xyc | [dst:Y] = [src:X] | dst, src |
Instruction Set (Binary)
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 00 | BRK S27*8 | ORA (dp,X)26*2,4 | COP S27*8 | ORA sr,S24*2 | TSB dp25*3,4 | ORA dp23*2,4 | ASL dp25*3,4 | ORA [dp]26*2,4 | PHP S13 | ORA #imm22*1,2 | ASL A12 | PHD S14 | TSB abs36*3 | ORA abs34*2 | ASL abs36*3 | ORA long45*2 |
| 10 | BPL rel22*6,7 | ORA (dp),Y25*2,4,5 | ORA (dp)25*2,4 | ORA (sr,S),Y27*2 | TRB dp25*3,4 | ORA dp,X24*2,4 | ASL dp,X26*3,4 | ORA [dp],Y26*2,4 | CLC12 | ORA abs,Y34*2,5 | INC A12 | TCS12 | TRB abs36*3 | ORA abs,X34*2,5 | ASL abs,X37*3 | ORA long,X45*2 |
| 20 | JSR abs36 | AND (dp,X)26*2,4 | JSL long48 | AND sr,S24*2 | BIT dp23*2,4 | AND dp23*2,4 | ROL dp25*3,4 | AND [dp]26*2,4 | PLP S14 | AND #imm22*1,2 | ROL A12*2 | PLD S15 | BIT abs34*2 | AND abs34*2 | ROL abs36*3 | AND long45*2 |
| 30 | BMI rel22*6,7 | AND (dp),Y25*2,4,5 | AND (dp)25*2,4 | AND (sr,S),Y27*2 | BIT dp,X24*2,4 | AND dp,X24*2,4 | ROL dp,X26*3,4 | AND [dp],Y26*2,4 | SEC12 | AND abs,Y34*2,5 | DEC A12 | TSC12 | BIT abs,X34*2 | AND abs,X34*2 | ROL abs,X37*3 | AND long,X45*2 |
| 40 | RTI S16*8 | EOR (dp,X)26*2,4 | WDM #imm22 | EOR sr,S24*2 | MVP xyc37 | EOR dp23*2,4 | LSR dp25*3,4 | EOR [dp]26*2,4 | PHA S13*2 | EOR #imm22*1,2 | LSR A12 | PHK S13 | JMP abs33 | EOR abs34*2 | LSR abs36*3 | EOR long45*2 |
| 50 | BVC rel22*6,7 | EOR (dp),Y25*2,4,5 | EOR (dp)25*2,4 | EOR (sr,S),Y27*2 | MVN xyc37 | EOR dp,X24*2,4 | LSR dp,X26*3,4 | EOR [dp],Y26*2,4 | CLI12 | EOR abs,Y34*2,5 | PHY S13*2 | TCD12 | JML long44 | EOR abs,X34*2 | LSR abs,X37*3 | EOR long,X45*2 |
| 60 | RTS S16 | ADC (dp,X)26*2,4 | PER rlong36 | ADC sr,S24*2 | STZ dp23*2,4 | ADC dp23*2,4 | ROR dp25*3,4 | ADC [dp]26*2,4 | PLA S14*2 | ADC #imm22*1,2 | ROR A12 | RTL S16 | JMP (abs)35 | ADC abs34*2 | ROR abs36*3 | ADC long45*2 |
| 70 | BVS rel22*6,7 | ADC (dp),Y25*2,4,5 | ADC (dp)25*2,4 | ADC (sr,S),Y27*2 | STZ dp,X24*2,4 | ADC dp,X24*2,4 | ROR dp,X26*3,4 | ADC [dp],Y26*2,4 | SEI12 | ADC abs,Y34*2,5 | PLY S14*2 | TDC12 | JMP (abs,X)36 | ADC abs,X34*2 | ROR abs,X37*3 | ADC long,X45*2 |
| 80 | BRA rel23*6,7 | STA (dp,X)26*2,4 | BRL rlong34 | STA sr,S24*2 | STY dp23*2,4 | STA dp23*2,4 | STX dp23*2,4 | STA [dp]26*2,4 | DEY12 | BIT #imm22*1,2 | TXA12 | PHB S13 | STY abs34*2 | STA abs34*2 | STX abs34*2 | STA long45*2 |
| 90 | BCC rel22*6,7 | STA (dp),Y26*2,4,5 | STA (dp)25*2,4 | STA (sr,S),Y27*2 | STY dp,X24*2,4 | STA dp,X24*2,4 | STX dp,Y24*2,4 | STA [dp],Y26*2,4 | TYA12 | STA abs,Y35*2,5 | TXS12 | TXY12 | STZ abs34*2 | STA abs,X35*2 | STZ abs,X35*2 | STA long,X45*2 |
| A0 | LDY #imm22*1,2 | LDA (dp,X)26*2,4 | LDX #imm22*1,2 | LDA sr,S24*2 | LDY dp23*2,4 | LDA dp23*2,4 | LDX dp23*2,4 | LDA [dp]26*2,4 | TAY12 | LDA #imm22*1,2 | TAX12 | PLB S14 | LDY abs34*2 | LDA abs34*2 | LDX abs34*2 | LDA long45*2 |
| B0 | BCS rel22*6,7 | LDA (dp),Y25*2,4,5 | LDA (dp)25*2,4 | LDA (sr,S),Y27*2 | LDY dp,X24*2,4 | LDA dp,X24*2,4 | LDX dp,Y24*2,4 | LDA [dp],Y26*2,4 | CLV12 | LDA abs,Y34*2,5 | TSX12 | TYX12 | LDY abs,X34*2 | LDA abs,X34*2 | LDX abs,Y34*2,5 | LDA long,X45*2 |
| C0 | CPY #imm22*1,2 | CMP (dp,X)26*2,4 | REP #imm23 | CMP sr,S24*2 | CPY dp23*2,4 | CMP dp23*2,4 | DEC dp25*3,4 | CMP [dp]26*2,4 | INY12 | CMP #imm22*1,2 | DEX12 | WAI13 | CPY abs34*2 | CMP abs34*2 | DEC abs36*3 | CMP long45*2 |
| D0 | BNE rel22*6,7 | CMP (dp),Y25*2,4,5 | CMP (dp)25*2,4 | CMP (sr,S),Y27*2 | PEI (dp)26*4 | CMP dp,X24*2,4 | DEC dp,X26*3,4 | CMP [dp],Y26*2,4 | CLD12 | CMP abs,Y34*2,5 | PHX S13*2 | STP13 | JML [abs]36 | CMP abs,X34*2 | DEC abs,X37*3 | CMP long,X45*2 |
| E0 | CPX #imm22*1,2 | SBC (dp,X)26*2,4 | SEP #imm23 | SBC sr,S24*2 | CPX dp23*2,4 | SBC dp23*2,4 | INC dp25*3,4 | SBC [dp]26*2,4 | INX12 | SBC #imm22*1,2 | NOP12 | XBA13 | CPX abs34*2 | SBC abs34*2 | INC abs36*3 | SBC long45*2 |
| F0 | BEQ rel22*6,7 | SBC (dp),Y25*2,4,5 | SBC (dp)25*2,4 | SBC (sr,S),Y27*2 | PEA abs35 | SBC dp,X24*2,4 | INC dp,X26*3,4 | SBC [dp],Y26*2,4 | SED12 | SBC abs,Y34*2,5 | PLX S14*2 | XCE12 | JSR (abs,X)38 | SBC abs,X34*2 | INC abs,X37*3 | SBC long,X45*2 |
- Add 1 byte if register is 16bit length mode.
- Add 1 cycle if register is 16bit length mode.
- Add 2 cycle if register is 16bit length mode.
- Add 1 cycle if lower byte of D register is not zero.
- Add 1 cycle if index register is 16bit, or write access, or crosses page boundary.
- Add 1 cycle if branch is taken.
- Add 1 cycle if branch is taken and page boundary is crossed in emulation mode.
- Add 1 cycle if native mode.
Instruction Set (Addressing)
| Mnemonic | imp | A | S | #imm | dp | dp,X | dp,Y | (dp) | (dp,X) | (dp),Y | [dp] | [dp],Y | abs | abs,X | abs,Y | (abs) | (abs,X) | [abs] | long | long,X | rel | rlong | sr,S | (sr,S),Y | xyc | Flags |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ADC | 69 | 65 | 75 | 72 | 61 | 71 | 67 | 77 | 6D | 7D | 79 | 6F | 7F | 63 | 73 | NV----ZC | ||||||||||
| AND | 29 | 25 | 35 | 32 | 21 | 31 | 27 | 37 | 2D | 3D | 39 | 2F | 3F | 23 | 33 | N-----Z- | ||||||||||
| ASL | 0A | 06 | 16 | 0E | 1E | N-----ZC | ||||||||||||||||||||
| BCC | 90 | -------- | ||||||||||||||||||||||||
| BCS | B0 | -------- | ||||||||||||||||||||||||
| BEQ | F0 | -------- | ||||||||||||||||||||||||
| BGE | B0 | -------- | ||||||||||||||||||||||||
| BIT | 89 | 24 | 34 | 2C | 3C | NV----Z- (N=opr.bit7, V=opr.bit6) / #imm : ------Z- | ||||||||||||||||||||
| BLT | 90 | -------- | ||||||||||||||||||||||||
| BMI | 30 | -------- | ||||||||||||||||||||||||
| BNE | D0 | -------- | ||||||||||||||||||||||||
| BPL | 10 | -------- | ||||||||||||||||||||||||
| BRA | 80 | -------- | ||||||||||||||||||||||||
| BRK | 00 | ----DI-- (D=0, I=1) | ||||||||||||||||||||||||
| BRL | 82 | -------- | ||||||||||||||||||||||||
| BVC | 50 | -------- | ||||||||||||||||||||||||
| BVS | 70 | -------- | ||||||||||||||||||||||||
| CLC | 18 | -------C (C=0) | ||||||||||||||||||||||||
| CLD | D8 | ----D--- (D=0) | ||||||||||||||||||||||||
| CLI | 58 | -----I-- (I=0) | ||||||||||||||||||||||||
| CLV | B8 | -V------ (V=0) | ||||||||||||||||||||||||
| CMA | C9 | C5 | D5 | D2 | C1 | D1 | C7 | D7 | CD | DD | D9 | CF | DF | C3 | D3 | N-----ZC | ||||||||||
| CMP | C9 | C5 | D5 | D2 | C1 | D1 | C7 | D7 | CD | DD | D9 | CF | DF | C3 | D3 | N-----ZC | ||||||||||
| COP | 02 | ----DI-- (D=0, I=1) | ||||||||||||||||||||||||
| CPX | E0 | E4 | EC | N-----ZC | ||||||||||||||||||||||
| CPY | C0 | C4 | CC | N-----ZC | ||||||||||||||||||||||
| DEA | 3A | N-----Z- | ||||||||||||||||||||||||
| DEC | 3A | C6 | D6 | CE | DE | N-----Z- | ||||||||||||||||||||
| DEX | CA | N-----Z- | ||||||||||||||||||||||||
| DEY | 88 | N-----Z- | ||||||||||||||||||||||||
| EOR | 49 | 45 | 55 | 52 | 41 | 51 | 47 | 57 | 4D | 5D | 59 | 4F | 5F | 43 | 53 | N-----Z- | ||||||||||
| INA | 1A | N-----Z- | ||||||||||||||||||||||||
| INC | 1A | E6 | F6 | EE | FE | N-----Z- | ||||||||||||||||||||
| INX | E8 | N-----Z- | ||||||||||||||||||||||||
| INY | C8 | N-----Z- | ||||||||||||||||||||||||
| JML | DC | 5C | -------- | |||||||||||||||||||||||
| JMP | 4C | 6C | 7C | DC | 5C | -------- | ||||||||||||||||||||
| JSL | 22 | -------- | ||||||||||||||||||||||||
| JSR | 20 | FC | 22 | -------- | ||||||||||||||||||||||
| LDA | A9 | A5 | B5 | B2 | A1 | B1 | A7 | B7 | AD | BD | B9 | AF | BF | A3 | B3 | N-----Z- | ||||||||||
| LDX | A2 | A6 | B6 | AE | BE | N-----Z- | ||||||||||||||||||||
| LDY | A0 | A4 | B4 | AC | BC | N-----Z- | ||||||||||||||||||||
| LSR | 4A | 46 | 56 | 4E | 5E | N-----ZC (N=0) | ||||||||||||||||||||
| MVN | 54 | -------- | ||||||||||||||||||||||||
| MVP | 44 | -------- | ||||||||||||||||||||||||
| NOP | EA | -------- | ||||||||||||||||||||||||
| ORA | 09 | 05 | 15 | 12 | 01 | 11 | 07 | 17 | 0D | 1D | 19 | 0F | 1F | 03 | 13 | N-----Z- | ||||||||||
| PEA | F4 | -------- | ||||||||||||||||||||||||
| PEI | D4 | -------- | ||||||||||||||||||||||||
| PER | 62 | -------- | ||||||||||||||||||||||||
| PHA | 48 | -------- | ||||||||||||||||||||||||
| PHB | 8B | -------- | ||||||||||||||||||||||||
| PHD | 0B | -------- | ||||||||||||||||||||||||
| PHK | 4B | -------- | ||||||||||||||||||||||||
| PHP | 08 | -------- | ||||||||||||||||||||||||
| PHX | DA | -------- | ||||||||||||||||||||||||
| PHY | 5A | -------- | ||||||||||||||||||||||||
| PLA | 68 | N-----Z- | ||||||||||||||||||||||||
| PLB | AB | N-----Z- | ||||||||||||||||||||||||
| PLD | 2B | N-----Z- | ||||||||||||||||||||||||
| PLP | 28 | NVMXDIZC | ||||||||||||||||||||||||
| PLX | FA | N-----Z- | ||||||||||||||||||||||||
| PLY | 7A | N-----Z- | ||||||||||||||||||||||||
| REP | C2 | NVMXDIZC | ||||||||||||||||||||||||
| ROL | 2A | 26 | 36 | 2E | 3E | N-----Z- | ||||||||||||||||||||
| ROR | 6A | 66 | 76 | 6E | 7E | N-----Z- | ||||||||||||||||||||
| RTI | 40 | NVMXDIZC | ||||||||||||||||||||||||
| RTL | 6B | -------- | ||||||||||||||||||||||||
| RTS | 60 | -------- | ||||||||||||||||||||||||
| SBC | E9 | E5 | F5 | F2 | E1 | F1 | E7 | F7 | ED | FD | F9 | EF | FF | E3 | F3 | NV----ZC | ||||||||||
| SEC | 38 | -------C (C=1) | ||||||||||||||||||||||||
| SED | F8 | ----D--- (D=1) | ||||||||||||||||||||||||
| SEI | 78 | -----I-- (I=1) | ||||||||||||||||||||||||
| SEP | E2 | NVMXDIZC | ||||||||||||||||||||||||
| STA | 85 | 95 | 92 | 81 | 91 | 87 | 97 | 8D | 9D | 99 | 8F | 9F | 83 | 93 | -------- | |||||||||||
| STP | DB | -------- | ||||||||||||||||||||||||
| STX | 86 | 96 | 8E | -------- | ||||||||||||||||||||||
| STY | 84 | 94 | 8C | -------- | ||||||||||||||||||||||
| STZ | 64 | 74 | 9C | 9E | -------- | |||||||||||||||||||||
| SWA | EB | N-----Z- | ||||||||||||||||||||||||
| TAD | 5B | N-----Z- | ||||||||||||||||||||||||
| TAS | 1B | -------- | ||||||||||||||||||||||||
| TAX | AA | N-----Z- | ||||||||||||||||||||||||
| TAY | A8 | N-----Z- | ||||||||||||||||||||||||
| TCD | 5B | N-----Z- | ||||||||||||||||||||||||
| TCS | 1B | -------- | ||||||||||||||||||||||||
| TDA | 7B | N-----Z- | ||||||||||||||||||||||||
| TDC | 7B | N-----Z- | ||||||||||||||||||||||||
| TRB | 14 | 1C | ------Z- | |||||||||||||||||||||||
| TSA | 3B | N-----Z- | ||||||||||||||||||||||||
| TSB | 04 | 0C | ------Z- | |||||||||||||||||||||||
| TSC | 3B | N-----Z- | ||||||||||||||||||||||||
| TSX | BA | N-----Z- | ||||||||||||||||||||||||
| TXA | 8A | N-----Z- | ||||||||||||||||||||||||
| TXS | 9A | -------- | ||||||||||||||||||||||||
| TXY | 9B | N-----Z- | ||||||||||||||||||||||||
| TYA | 98 | N-----Z- | ||||||||||||||||||||||||
| TYX | BB | N-----Z- | ||||||||||||||||||||||||
| WAI | CB | -------- | ||||||||||||||||||||||||
| WDM | 42 | -------- | ||||||||||||||||||||||||
| XBA | EB | N-----Z- | ||||||||||||||||||||||||
| XCE | FB | -------C (C=E, E=C) |
Vector Locations
| Address | Mode | Label |
|---|---|---|
| $00FFE0 | Native | (Reserved) |
| $00FFE2 | Native | (Reserved) |
| $00FFE4 | Native | COP |
| $00FFE6 | Native | BRK |
| $00FFE8 | Native | ABORT |
| $00FFEA | Native | NMI |
| $00FFEC | Native | (Reserved) |
| $00FFEE | Native | IRQ |
| $00FFF0 | Emulation | (Reserved) |
| $00FFF2 | Emulation | (Reserved) |
| $00FFF4 | Emulation | COP |
| $00FFF6 | Emulation | (Reserved) |
| $00FFF8 | Emulation | ABORT |
| $00FFFA | Emulation | NMI |
| $00FFFC | Emulation | RESET |
| $00FFFE | Emulation | IRQ / BRK |