最近在玩汇编语言,找到这份6502 CPU(APPLE I使用的CPU)的指令集,整理了一下,以便随时查阅。
概要
6502有16位(64K)的地址空间分成256个页面,每个256字节。
0 页面($0000-$00FF) 有一些很特别的性质,例如寻址模式,它是非常重要的。
1 页面($0100-$01FF) 是堆栈。
$FFFA-$FFFB
字节是NMIB中断向量。
$FFFC-$FFFD
字节是复位向量。
$FFFE-$FFFF
字节是IRQ/BRK向量。
6502有3个寄存器、栈指针、标志位(P)和程序计数器:
寄存器是累加器(A),X变址寄存器,和Y变址寄存器,每一个都是8位的,大多数指令把结果留在累加器里;
栈指针是一个8位的寄存器用来指示栈(1 页面)的偏移量,当使用push和pull指令时它自动增加和减少,你也可以用TSX和TXS指令直接访问和修改它的值。
P标志包含下面这些占用1个位的标志:
标志 | 名称 | 作用 |
N | 符号 – Negative | 当操作结果高位被设置(为负),该位被设置,否则被清除 |
V | 溢出 – Overflow | 当操作发生借位或进位时,该位被设置 |
B | 中断 – Break | 遇到‘BRK’指令时,该位被设置 |
D | 十进制 – Decimal | 当该位被设置时,所以的算术操作都是BCD (例如:09+01=10)。当该位被清除时,所有的算术操作都是以二为补码的二进制 (例如: 09+01=0A) |
I | 中断禁止 – Interrupt Disable | 当该位被设置时,不会发生中断 |
Z | 零 – Zero | 当操作结果为零时,该位被设置。否则被清除 |
C | 进位 – Carry | 当发生进位时,该位被设置 |
这些位按这个顺序排列(从7 [最高]到0 [最低]): NV-BDIZC
指令集
助记符 | 描述 | 表达式 | 标志 |
读取(load)&储存(store)指令 | |||
LDA | load accumulator – 将数据读入累加器 | A<–M | NZ |
LDX | load X index – 将数据读入变址寄存器X | X<–M | NZ |
LDY | load Y index – 将数据读入变址寄存器Y | Y<–M | NZ |
STA | store accumulator – 储存累加器的数据 | M<–A | – |
STX | store X index – 储存变址寄存器X的数据 | M<–A | – |
STY | store Y index – 储存变址寄存器Y的数据 | M<–A | – |
STZ | store zero – 储存零 | M<–0 | – |
堆栈操作 | |||
PHA | push accumulator – 累加器入栈 | Stack<–A | – |
PHX | push X index – 变址寄存器X入栈 | Stack<–X | – |
PHY | push Y index – 变址寄存器Y入栈 | Stack<–Y | – |
PHP | push processor flags – 标志位P入栈 | Stack<–P | – |
PLA | pull (pop) accumulator – 累加器出栈 | A<–Stack | NZ |
PLX | pull (pop) X index – 变址寄存器X出栈 | X<–Stack | NZ |
PLY | pull (pop) Y index – 变址寄存器Y出栈 | Y<–Stack | NZ |
PLP | pull (pop) processor flags – 标志位P出栈 | P<–Stack | All |
TSX | transfer stack pointer to X – 传送栈指针到X | X<–S | NZ |
TXS | transfer X to stack pointer – 传送X到栈指针 | S<–X | – |
递增(increment)& 递减(decrement)操作 | |||
INA | increment accumulator累加器递增 | A++ | NZ |
INX | increment X index变址寄存器X递增 | X++ | NZ |
INY | increment Y index变址寄存器Y递增 | Y++ | NZ |
DEA | decrement accumulator累加器递减 | A– | NZ |
DEX | decrement X index变址寄存器X递减 | X– | NZ |
DEY | decrement Y index变址寄存器Y递减 | Y– | NZ |
INC | increment memory location指定的内存单元递增 | M++ | NZ |
DEC | decrement memory location指定的内存单元递减 | M– | NZ |
移位操作 | |||
ASL | arithmetic shift left, high bit into carry算术左移,高位移入进位标志 | C<–A7,A<–(A<<1) | NZC |
LSR | logical shift right, low bit into carry逻辑右移,低位移入进位标志 | C<–A0,A<–(A>>1) | N=0 ZC |
ROL | rotate left through carry通过进位标志循环左移 | C<–A7,A<–((A<<1)+C) | NZC |
ROR | rotate right through carry通过进位标志循环右移 | C<–A0,A<–(A7=C+(A>>1)) | NZC |
逻辑操作 | |||
AND | and accumulator与累加器 | A<–A&M | NZ |
ORA | or accumulator或累加器 | A<–A|M | NZ |
EOR | exclusive-or accumulator异或累加器 | A<–A^M | NZ |
BIT | test bits against accumulator测试累加器的某个位(1) | Z<–!(A&M),N<–M7,V<–M6 | N=M7 V=M6 Z |
CMP | compare with accumulator与累加器比较 | A-M–>NZC | NZC |
CPX | compare with X index与X变址寄存器比较 | X-M–>NZC | NZC |
CPY | compare with Y index与Y变址寄存器比较 | Y-M–>NZC | NZC |
TRB | test and reset bits对位进行测试和清除 | x | |
TSB | test and set bits对位进行测试和设置 | x | |
RMB | reset memory bit对内存位进行清除 | x | |
SMB | set memory bit对内存位进行设置 | x | |
算术操作 | |||
ADC | add accumulator, with carry加累加器(带进位) | A<–A+M+C | NZCV |
SBC | subtract accumulator, with borrow减累加器(带借位) | A<–A-M-~C | NZCV |
流程控制 指令 | |||
JMP | unconditional jump无条件跳转 | PC<–Address | – |
JSR | jump Subroutine跳到子程序 | Stack<–PC,PC<–Address | – |
RTS | return from Subroutine由子程序返回 | PC<–Stack | – |
RTI | return from Interrupt由中断返回 | P<–Stack,PC<–Stack | From Stack |
BRA | branch Always转移 | PC=PC+offset | – |
BEQ | branch on equal (zero set)相等(零标志被设置)时转移 | if Z=1,PC+=offset | – |
BNE | branch on not equal (zero clear)不相等(零标志被清除)时转移 | if Z=0,PC+=offset | – |
BCC | branch on carry clear进位标志被清除时转移(2) | if C=0,PC+=offset | – |
BCS | branch on carry set进位标志被设置时转移(2) | if C=1,PC+=offset | – |
BVC | branch on overflow clear溢出标志被清除时转移 | if V=0,PC+=offset | – |
BVS | branch on overflow set溢出标志被设置时转移 | if V=1,PC+=offset | – |
BMI | branch on minus负数时转移 | if N=1,PC+=offset | – |
BPL | branch on plus正数时转移 | if N=0,PC+=offset | – |
BBR | branch on bit reset (zero)某位被清除时转移 | – | |
BBS | branch on bit set (one)某位被设置时转移 | – | |
处理器状态指令 | |||
CLC | clear carry flag清除进位标志 | C<–0 | C=0 |
CLD | clear decimal mode清除十进制模式 | D<–0 | D=0 |
CLI | clear interrupt disable bit清除中断禁用 | I<–0 | I=0 |
CLV | clear overflow flag清除溢出标志 | V<–0 | V=0 |
SEC | set carry flag进位标志 | C<–1 | C=1 |
SED | set decimal mode十进制模式 | C<–1 | D=1 |
SEI | set interrupt disable bit中断禁用 | I<–1 | I=1 |
传送指令 | |||
TAX | transfer accumulator to X index传送累加器到X变址寄存器 | X<–A | NZ |
TAY | transfer accumulator to Y index传送累加器到Y变址寄存器 | Y<–A | NZ |
TXA | transfer X index to accumulator传送X变址寄存器到累加器 | A<–X | NZ |
TYA | transfer Y index to accumulator传送Y变址寄存器到累加器 | A<–Y | NZ |
特殊指令 | |||
NOP | no operation空操作 | – | |
BRK | force break强行中断 | Stack<–PC,PC<–$FFFE | B=1 |
注释:
- 这个BIT指令拷贝bit 6到V标志,bit 7到N标志(例外的是在直接寻址模式的时候V & N没有触及)。累加器和操作数进行与操作 ,Z标志将被适当地设置。(的说明:测试数如01…80应先被装入累加器,该指令应该不改变累加器)
- 这个BCC & BCS指令:指令分别对应于BLT (大于时跳转) 和BGE (小于时跳转)。
寻址模式
一共有15种寻址模式,如下:
隐式寻址 [隐式] Implied Addressing [Implied]
在隐式寻址模式里, 包含操作数的地址被隐含在指令的操作码里。
累加器寻址 [累加器] Accumulator Addressing [Accumulator]
这种寻址模式表现为只有一个操作数,另一个操作数隐含为累加器。
直接寻址 [直接] Immediate Addressing [Immediate]
在直接寻址模式里,操作数被包含在指令的第二个字节里,不需要其他内存寻址。
绝对寻址 [绝对] Absolute Addressing [Absolute]
在绝对寻址模式里,指令的第二个字节指定了有效地址的低八位,第三个字节指定高八位。因此,这种寻址模式允许访问全部的64K可寻址内存。
0页面寻址 [0页面] Zero Page Addressing [Zero Page]
0页面寻址允许只取指令的第二字节并假设高位地址为0,以得到较短的代码和执行时间。小心地使用0页面寻址能有效地增加代码的效率。
绝对变址寻址 [绝对,X 或 绝对,Y] Absolute Indexed Addressing [Absolute,X or Absolute,Y]
绝对变址寻址联合X或Y变址寄存器使用,以“绝对, X”和“绝对, Y”的形式出现。有效地址由X或Y的内容加上指令的第二或第三字节包含的地址得到。这种模式允许变址寄存器包含变址或计数值而指令包含基址。这种寻址模式允许定位任何位置并且可以用变址修改多个地方,用以减少代码和指令时间。
0页面变址寻址 [0页面,X 或 0页面,Y] Zero Page Indexed Addressing [Zero Page,X or Zero Page,Y]
0页面变址寻址联合X或Y变址寄存器使用,以“0页面, X”和“0页面, Y”的形式出现。有效地址由指令的第二个字节加上变址寄存器的内容得到。因为这是一个“0页面”寻址,所以第二字节的内容定位于0页面。另外,因为“0页面”寻址模式的特性,所以不会有进位加到高位内存,也不会发生跨页边界的问题。
相对寻址 [相对] Relative Addressing [Relative]
相对寻址只用在转移(branch)指令指令中;它指定了条件转移的目标。指令的第二个字节变成一个操作数,作为偏移加到指向下一条指令的指令指针上。偏移范围从-128到127字节,相对于下一条指令。
0页面变址间接寻址 [(0页面,X)] Zero Page Indexed Indirect Addressing [(Zero Page,X)]
0页面变址间接寻址(通常参考为 间接 X)指令的第二个字节加到X变址寄存器的内容上;进位被舍弃。加法运算的结果指向0页面的一个内存单元,而这个内存单元是有效地址的低8位。下一个0页面单元是有效地址的高8位。指向有效地址的高8位和低8位都必须在0页面内。
绝对变址间接寻址 [(绝对,X)] Absolute Indexed Indirect Addressing [(Absolute,X)](只用在跳转(Jump)指令)
在绝对变址间接寻址中,指令的第二和第三字节的内容被加到X 寄存器。加法运算的结果指向一个内存单元,而这个内存单元是有效地址的低8位。下一个内存单元是有效地址的高8位。
变址间接寻址 [(0页面),Y] Indexed Indirect Addressing [(Zero Page),Y]
这种寻址通常参考为 间接,Y。指令的第二个字节指向0页面的一个内存单元,这个内存单元的内容被加到Y变址寄存器,结果是有效地址的低8位。加法的进位被加到0页面的下一个内存单元,结果是有效地址的高8位。
0页面间接寻址 [(0页面)] Zero Page Indirect Addressing [(Zero Page)]
在0页面间接寻址模式里,指令的第二个字节指向0页面的一个内存单元,单元的内容是有效地址的低8位,下一个0页面单元的内容是有效地址的高8位。
绝对间接寻址 [(Absolute)] Absolute Indirect Addressing [(Absolute)](只用在跳转(Jump)指令)
指令的第二个字节包含了一个内存单元的低8位地址,第三个字节包含了同一个内存单元的高8位地址。而这个内存单元是有效地址的低位,下一个内存单元是有效地址的高位,最后有效地址被装入16位的指令指针。
(pinokio的说明:[xxxx]表示地址为xxxx的内存数据,xxxx即指针;(yyyy)表示[yyyy]所指向的地址的内存数据,yyyy即指针的指针。下表中,#Oper表示以一个实际的数为操作数,其余为地址)
指令编码
助记符 | 寻址模式 | 形式 | 操作码 | 指令长度 | CPU周期 |
ADC | Immediate直接 | ADC #Oper | 69 | 2 | 2 |
Zero Page零页面 | ADC Zpg | 65 | 2 | 3 | |
Zero Page,X零页面,X | ADC Zpg,X | 75 | 2 | 4 | |
Absolute绝对 | ADC Abs | 6D | 3 | 4 | |
Absolute,X绝对,X | ADC Abs,X | 7D | 3 | 4 | |
Absolute,Y绝对,Y | ADC Abs,Y | 79 | 3 | 4 | |
(Zero Page,X)(零页面,X) | ADC (Zpg,X) | 61 | 2 | 6 | |
(Zero Page),Y(零页面),Y | ADC (Zpg),Y | 71 | 2 | 5 | |
(Zero Page)(零页面) | ADC (Zpg) | 72 | 2 | 5 | |
AND | Immediate直接 | AND #Oper | 29 | 2 | 2 |
Zero Page零页面 | AND Zpg | 25 | 2 | 3 | |
Zero Page,X零页面,X | AND Zpg,X | 35 | 2 | 4 | |
Absolute绝对 | AND Abs | 2D | 3 | 4 | |
Absolute,X绝对,X | AND Abs,X | 3D | 3 | 4 | |
Absolute,Y绝对,Y | AND Abs,Y | 39 | 3 | 4 | |
(Zero Page,X)(零页面,X) | AND (Zpg,X) | 21 | 2 | 6 | |
(Zero Page),Y(零页面),Y | AND (Zpg),Y | 31 | 2 | 5 | |
(Zero Page) (零页面) | AND (Zpg) | 32 | 2 | 5 | |
ASL | accumulator累加器 | ASL A | 0A | 1 | 2 |
Zero Page零页面 | ASL Zpg | 06 | 2 | 5 | |
Zero Page,X零页面,X | ASL Zpg,X | 16 | 2 | 6 | |
Absolute绝对 | ASL Abs | 0E | 3 | 6 | |
Absolute,X绝对,X | ASL Abs,X | 1E | 3 | 7 | |
BBR0 | Relative相对 | BBR0 Oper | 0F | 2 | 2 |
BBR1 | Relative相对 | BBR1 Oper | 1F | 2 | 2 |
BBR2 | Relative相对 | BBR2 Oper | 2F | 2 | 2 |
BBR3 | Relative相对 | BBR3 Oper | 3F | 2 | 2 |
BBR4 | Relative相对 | BBR4 Oper | 4F | 2 | 2 |
BBR5 | Relative相对 | BBR5 Oper | 5F | 2 | 2 |
BBR6 | Relative相对 | BBR6 Oper | 6F | 2 | 2 |
BBR7 | Relative相对 | BBR7 Oper | 7F | 2 | 2 |
BBS0 | Relative相对 | BBS0 Oper | 8F | 2 | 2 |
BBS1 | Relative相对 | BBS1 Oper | 9F | 2 | 2 |
BBS2 | Relative相对 | BBS2 Oper | AF | 2 | 2 |
BBS3 | Relative相对 | BBS3 Oper | BF | 2 | 2 |
BBS4 | Relative相对 | BBS4 Oper | CF | 2 | 2 |
BBS5 | Relative相对 | BBS5 Oper | DF | 2 | 2 |
BBS6 | Relative相对 | BBS6 Oper | EF | 2 | 2 |
BBS7 | Relative相对 | BBS7 Oper | FF | 2 | 2 |
BCC | Relative相对 | BCC Oper | 90 | 2 | 2 |
BCS | Relative相对 | BCS Oper | B0 | 2 | 2 |
BEQ | Relative相对 | BEQ Oper | F0 | 2 | 2 |
BIT | Immediate直接 | BIT #Oper | 89 | 2 | 2 |
Zero Page零页面 | BIT Zpg | 24 | 2 | 3 | |
Zero Page,X零页面,X | BIT Zpg,X | 34 | 2 | 4 | |
Absolute绝对 | BIT Abs | 2C | 3 | 4 | |
Absolute,X绝对,X | BIT Abs,X | 3C | 3 | 4 | |
BMI | Relative相对 | BMI Oper | 30 | 2 | 2 |
BNE | Relative相对 | BNE Oper | D0 | 2 | 2 |
BPL | Relative相对 | BPL Oper | 10 | 2 | 2 |
BRA | Relative相对 | BRA Oper | 80 | 2 | 3 |
BRK | Implied隐含 | BRK | 00 | 1 | 7 |
BVC | Relative相对 | BVC Oper | 50 | 2 | 2 |
BVS | Relative相对 | BVS Oper | 70 | 2 | 2 |
CLC | Implied隐含 | CLC | 18 | 1 | 2 |
CLD | Implied隐含 | CLD | D8 | 1 | 2 |
CLI | Implied隐含 | CLI | 58 | 1 | 2 |
CLV | Implied隐含 | CLV | B8 | 1 | 2 |
CMP | Immediate直接 | CMP #Oper | C9 | 2 | 2 |
Zero Page零页面 | CMP Zpg | C5 | 2 | 3 | |
Zero Page,X零页面,X | CMP Zpg | D5 | 2 | 4 | |
Absolute绝对 | CMP Abs | CD | 3 | 4 | |
Absolute,X绝对,X | CMP Abs,X | DD | 3 | 4 | |
Absolute,Y绝对,Y | CMP Abs,Y | D9 | 3 | 4 | |
(Zero Page,X)( 零页面,X) | CMP (Zpg,X) | C1 | 2 | 6 | |
(Zero Page),Y(零页面),Y | CMP (Zpg),Y | D1 | 2 | 5 | |
(Zero Page) (零页面) | CMP (Zpg) | D2 | 2 | 5 | |
CPX | Immediate直接 | CPX #Oper | E0 | 2 | 2 |
Zero Page零页面 | CPX Zpg | E4 | 2 | 3 | |
Absolute绝对 | CPX Abs | EC | 3 | 4 | |
CPY | Immediate直接 | CPY #Oper | C0 | 2 | 2 |
Zero Page零页面 | CPY Zpg | C4 | 2 | 3 | |
Absolute绝对 | CPY Abs | CC | 3 | 4 | |
DEA | accumulator累加器 | DEA | 3A | 1 | 2 |
DEC | Zero Page 零页面 | DEC Zpg | C6 | 2 | 5 |
Zero Page,X 零页面,X | DEC Zpg,X | D6 | 2 | 6 | |
Absolute 绝对 | DEC Abs | CE | 3 | 6 | |
Absolute,X绝对,X | DEC Abs,X | DE | 3 | 7 | |
DEX | Implied 隐含 | DEX | CA | 1 | 2 |
DEY | Implied 隐含 | DEY | 88 | 1 | 2 |
EOR | Immediate 直接 | EOR #Oper | 49 | 2 | 2 |
Zero Page 零页面 | EOR Zpg | 45 | 2 | 3 | |
Zero Page,X 零页面,X | EOR Zpg,X | 55 | 2 | 4 | |
Absolute 绝对 | EOR Abs | 4D | 3 | 4 | |
Absolute,X 绝对,X | EOR Abs,X | 5D | 3 | 4 | |
Absolute,Y 绝对,Y | EOR Abs,Y | 59 | 3 | 4 | |
(Zero Page,X) (零页面,X) | EOR (Zpg,X) | 41 | 2 | 6 | |
(Zero Page),Y (零页面),Y | EOR (Zpg),Y | 51 | 2 | 5 | |
(Zero Page) (零页面) | EOR (Zpg) | 52 | 2 | 5 | |
INA | accumulator累加器 | INA | 1A | 1 | 2 |
INC | Zero Page零页面 | INC Zpg | E6 | 2 | 5 |
Zero Page,X零页面,X | INC Zpg,X | F6 | 2 | 6 | |
Absolute绝对 | INC Abs | EE | 3 | 6 | |
Absolute,X绝对,X | INC Abs,X | FE | 3 | 7 | |
INX | Implied隐含 | INX | E8 | 1 | 2 |
INY | Implied隐含 | INY | C8 | 1 | 2 |
JMP | Absolute绝对 | JMP Abs | 4C | 3 | 3 |
(Absolute) (绝对) | JMP (Abs) | 6C | 3 | 5 | |
(Absolute,X) (绝对,X) | JMP (Abs,X) | 7C | 3 | 6 | |
JSR | Absolute绝对 | JSR Abs | 20 | 3 | 6 |
LDA | Immediate直接 | LDA #Oper | A9 | 2 | 2 |
Zero Page零页面 | LDA Zpg | A5 | 2 | 3 | |
Zero Page,X零页面,X | LDA Zpg,X | B5 | 2 | 4 | |
Absolute绝对 | LDA Abs | AD | 3 | 4 | |
Absolute,X绝对,X | LDA Abs,X | BD | 3 | 4 | |
Absolute,Y绝对,Y | LDA Abs,Y | B9 | 3 | 4 | |
(Zero Page,X)(零页面,X) | LDA (Zpg,X) | A1 | 2 | 6 | |
(Zero Page),Y(零页面),Y | LDA (Zpg),Y | B1 | 2 | 5 | |
(Zero Page)(零页面) | LDA (Zpg) | B2 | 2 | 5 | |
LDX | Immediate直接 | LDX #Oper | A2 | 2 | 2 |
Zero Page零页面 | LDX Zpg | A6 | 2 | 3 | |
Zero Page,Y 零页面,Y | LDX Zpg,Y | B6 | 2 | 4 | |
Absolute绝对 | LDX Abs | AE | 3 | 4 | |
Absolute,Y绝对,Y | LDX Abs,Y | BE | 3 | 4 | |
LDY | Immediate直接 | LDY #Oper | A0 | 2 | 2 |
Zero Page零页面 | LDY Zpg | A4 | 2 | 3 | |
Zero Page,Y 零页面,Y | LDY Zpg,X | B4 | 2 | 4 | |
Absolute绝对 | LDY Abs | AC | 3 | 4 | |
Absolute,Y绝对,Y | LDY Abs,X | BC | 3 | 4 | |
LSR | accumulator累加器 | LSR A | 4A | 1 | 2 |
Zero Page 零页面 | LSR Zpg | 46 | 2 | 5 | |
Zero Page,X零页面,X | LSR Zpg,X | 56 | 2 | 6 | |
Absolute绝对 | LSR Abs | 4E | 3 | 6 | |
Absolute,X绝对,X | LSR Abs,X | 5E | 3 | 7 | |
NOP | Implied隐含 | NOP | EA | 1 | 2 |
ORA | Immediate直接 | ORA #Oper | 09 | 2 | 2 |
Zero Page零页面 | ORA Zpg | 05 | 2 | 3 | |
Zero Page,X零页面,X | ORA Zpg,X | 15 | 2 | 4 | |
Absolute绝对 | ORA Abs | 0D | 3 | 4 | |
Absolute,X绝对,X | ORA Abs,X | 1D | 3 | 4 | |
Absolute,Y绝对,Y | ORA Abs,Y | 19 | 3 | 4 | |
(Zero Page,X)(零页面,X) | ORA (Zpg,X) | 01 | 2 | 6 | |
(Zero Page),Y(零页面),Y | ORA (Zpg),Y | 11 | 2 | 5 | |
(Zero Page)(零页面) | ORA (Zpg) | 12 | 2 | 5 | |
PHA | Implied隐含 | PHA | 48 | 1 | 3 |
PHP | Implied隐含 | PHP | 08 | 1 | 3 |
PHX | Implied隐含 | PHX | DA | 1 | 3 |
PHY | Implied隐含 | PHY | 5A | 1 | 3 |
PLA | Implied隐含 | PLA | 68 | 1 | 4 |
PLP | Implied隐含 | PLP | 28 | 1 | 4 |
PLX | Implied隐含 | PLX | FA | 1 | 4 |
PLY | Implied隐含 | PLY | 7A | 1 | 4 |
ROL | accumulator累加器 | ROL A | 2A | 1 | 2 |
Zero Page零页面 | ROL Zpg | 26 | 2 | 5 | |
Zero Page,X零页面,X | ROL Zpg,X | 36 | 2 | 6 | |
Absolute绝对 | ROL Abs | 2E | 3 | 6 | |
Absolute,X绝对,X | ROL Abs,X | 3E | 3 | 7 | |
ROR | accumulator累加器 | ROR A | 6A | 1 | 2 |
Zero Page零页面 | ROR Zpg | 66 | 2 | 5 | |
Zero Page,X零页面,X | ROR Zpg,X | 76 | 2 | 6 | |
Absolute绝对 | ROR Abs | 6E | 3 | 6 | |
Absolute,X绝对,X | ROR Abs,X | 7E | 3 | 7 | |
RTI | Implied隐含 | RTI | 40 | 1 | 6 |
RTS | Implied隐含 | RTS | 60 | 1 | 6 |
SBC | Immediate直接 | SBC #Oper | E9 | 2 | 2 |
Zero Page零页面 | SBC Zpg | E5 | 2 | 3 | |
Zero Page,X零页面,X | SBC Zpg,X | F5 | 2 | 4 | |
Absolute绝对 | SBC Abs | ED | 3 | 4 | |
Absolute,X绝对,X | SBC Abs,X | FD | 3 | 4 | |
Absolute,Y绝对,Y | SBC Abs,Y | F9 | 3 | 4 | |
(Zero Page,X)(零页面,X) | SBC (Zpg,X) | E1 | 2 | 6 | |
(Zero Page),Y(零页面),Y | SBC (Zpg),Y | F1 | 2 | 5 | |
(Zero Page)(零页面) | SBC (Zpg) | F2 | 2 | 5 | |
SEC | Implied隐含 | SEC | 38 | 1 | 2 |
SED | Implied隐含 | SED | F8 | 1 | 2 |
SEI | Implied隐含 | SEI | 78 | 1 | 2 |
STA | Zero Page零页面 | STA Zpg | 85 | 2 | 3 |
Zero Page,X零页面,X | STA Zpg,X | 95 | 2 | 4 | |
Absolute绝对 | STA Abs | 8D | 3 | 4 | |
Absolute,X绝对,X | STA Abs,X | 9D | 3 | 5 | |
Absolute,Y绝对,Y | STA Abs,Y | 99 | 3 | 5 | |
(Zero Page,X)(零页面,X) | STA (Zpg,X) | 81 | 2 | 6 | |
(Zero Page),Y(零页面),Y | STA (Zpg),Y | 91 | 2 | 6 | |
(Zero Page)(零页面) | STA (Zpg) | 92 | 2 | 5 | |
STX | Zero Page零页面 | STX Zpg | 86 | 2 | 3 |
Zero Page,Y 零页面,Y | STX Zpg,Y | 96 | 2 | 4 | |
Absolute绝对 | STX Abs | 8E | 3 | 4 | |
STY | Zero Page零页面 | STY Zpg | 84 | 2 | 3 |
Zero Page,X零页面,X | STY Zpg,X | 94 | 2 | 4 | |
Absolute绝对 | STY Abs | 8C | 3 | 4 | |
STZ | Zero Page零页面 | STZ Zpg | 64 | 2 | 3 |
Zero Page,X零页面,X | STZ Zpg,X | 74 | 2 | 4 | |
Absolute绝对 | STZ Abs | 9C | 3 | 4 | |
Absolute,X绝对,X | STZ Abs,X | 9E | 3 | 5 | |
TAX | Implied隐含 | TAX | AA | 1 | 2 |
TAY | Implied隐含 | TAY | A8 | 1 | 2 |
TRB | Zero Page零页面 | TRB Zpg | 14 | 2 | 5 |
Absolute绝对 | TRB Abs | 1C | 3 | 6 | |
TSB | Zero Page零页面 | TSB Zpg | 04 | 2 | 5 |
Absolute绝对 | TSB Abs | 0C | 3 | 6 | |
TSX | Implied隐含 | TSX | BA | 1 | 2 |
TXA | Implied隐含 | TXA | 8A | 1 | 2 |
TXS | Implied隐含 | TXS | 9A | 1 | 2 |
TYA | Implied隐含 | TYA | 98 | 1 | 2 |
太赞了!正想写一个FC模拟器,指令集应该是一样的