超级任天堂编程/65c816参考
外观
< 超级任天堂编程
| 位 | 寄存器 | 描述 |
| 8 或 16 | A | 累加器。这是数学寄存器。它存储两个操作数之一或大多数算术和逻辑运算的结果。 |
| 8 或 16 | X, Y | 索引寄存器。这些可以用来引用内存,将数据传递到内存,或者作为循环的计数器。 |
| 16 | S | 堆栈指针,指向堆栈上下一个可用(未使用的)位置。 |
| 8 | DBR | 数据库寄存器,保存内存传输的默认库。 |
| 16 | D | 直接页面寄存器,用于直接页面寻址模式。 |
| 8 | PBR | 程序库,保存所有指令获取的库地址。 |
| 8 | P | 处理器状态,保存各种重要的标志,见下文。 |
| 16 | PC | 程序计数器 |
| 助记符 | 值 | 二进制值 | 描述 | |
| N | #$80 | 10000000 | 负数 | 用于分支指令的条件代码。 |
| V | #$40 | 01000000 | 溢出 | |
| Z | #$02 | 00000010 | 零 | |
| C | #$01 | 00000001 | 进位 | |
| D | #$08 | 00001000 | 十进制 | |
| I | #$04 | 00000100 | IRQ 禁用 | |
| X | #$10 | 00010000 | 索引寄存器大小(仅限本机模式) (0 = 16 位,1 = 8 位) | |
| M | #$20 | 00100000 | 累加器寄存器大小(仅限本机模式) (0 = 16 位,1 = 8 位) | |
| E | 不在 P 中 | 6502 仿真模式 | ||
| B | #$10 | 00010000 | 断点(仅限仿真模式) | |
| 指令 | 描述 | 参数 | 设置标志 | |
| ADC | 将 A 与某值和进位位相加。结果放入 A 中。 | 立即值或地址 | n,v,z,c | 算术指令 |
| SBC | 从某值和进位位中减去。 | n,v,z,c | ||
| AND | 将 A 与内存进行 AND 运算,并将结果存储在 A 中。 | 立即值或地址 | n,z | 逻辑指令 |
| EOR | 异或 | n,z | ||
| ORA | 将 A 与内存进行 OR 运算,并将结果存储在 A 中。 | 立即值或地址 | n,z | |
| TSB | 测试并设置位 | z | ||
| TRB | 测试并复位位 | z | ||
| ASL | 算术左移 | A 或地址 | n,z,c | 移位指令 |
| LSR | 逻辑右移 | A 或地址 | n,z,c | |
| ROL | 左旋 | A 或地址 | n,z,c | |
| ROR | 右旋 | A 或地址 | n,z,c | |
| BIT | 测试位,设置 | 立即值或地址 | n,v,z(仅限立即模式下的 z) | 测试指令 |
| CMP | 将累加器与内存进行比较 | n,z,c | ||
| CPX | 将寄存器 X 与内存进行比较 | n,z,c | ||
| CPY | 将寄存器 Y 与内存进行比较 | n,z,c | ||
| DEA | 递减累加器 | n,z | ||
| DEC | 递减,参见 INC | n,z | ||
| DEX | 递减 X 寄存器 | n,z | ||
| DEY | 递减 Y 寄存器 | n,z | ||
| INA | 递增累加器 | n,z | ||
| INC | 递增,参见 DEC | n,z | ||
| INX | 递增 X 寄存器 | n,z | ||
| INY | 递增 Y 寄存器 | n,z | ||
| NOP | 无操作 | 无 | ||
| XBA | 交换累加器的字节 | n,z | ||
| 指令 | 描述 |
| LDA | 从内存加载累加器 |
| LDX | 从内存加载寄存器 X |
| LDY | 从内存加载寄存器 Y |
| STA | 将累加器存储到内存中 |
| STX | 将寄存器 X 存储到内存中 |
| STY | 将寄存器 Y 存储到内存中 |
| STZ | 将零存储到内存中 |
| 指令 | 描述 | 受影响的标志 |
| TAX | 将累加器传输到索引寄存器 X | n,z |
| TAY | 将累加器传输到索引寄存器 Y | n,z |
| TCD | 将 16 位累加器传输到直接页面寄存器 | n,z |
| TCS | 将 16 位累加器传输到堆栈指针 | 无 |
| TDC | 将直接页面寄存器传输到 16 位累加器 | n,z |
| TSC | 将堆栈指针传输到 16 位累加器 | n,z |
| TSX | 将堆栈指针传输到索引寄存器 X | n,z |
| TXA | 将索引寄存器 X 传输到累加器 | n,z |
| TXS | 将索引寄存器 X 传输到堆栈指针 | 无 |
| TXY | 将索引寄存器 X 传输到索引寄存器 Y | n,z |
| TYA | 将索引寄存器 Y 传输到累加器 | n,z |
| TYX | 将索引寄存器 Y 传输到索引寄存器 X | n,z |
| 指令 | 描述 |
| BCC | 如果进位标志为清除 (C=0) 则分支 |
| BCS | 如果进位标志为设置 (C=1) 则分支 |
| BNE | 如果不等于 (Z=0) 则分支 |
| BEQ | 如果等于 (Z=1) 则分支 |
| BPL | 如果为正 (N=0) 则分支 |
| BMI | 如果为负 (N=1) 则分支 |
| BVC | 如果溢出标志为清除 (V=0) 则分支 |
| BVS | 如果溢出标志为设置 (V=1) 则分支 |
| BRA | 始终分支(无条件) |
| BRL | 始终长分支(无条件) |
| 指令 | 描述 |
| JMP | 跳转 |
| JML | 长跳转 |
| JSR | 跳转并保存返回地址 |
| JSL | 长跳转并保存返回地址 |
| RTS | 从子程序返回 |
| RTL | 从长子程序返回 |
| 指令 | 描述 |
| BRK | 生成软件中断 |
| COP | 生成协处理器中断 |
| RTI | 从中断返回 |
| STP | 停止处理器直到重置 |
| WAI | 等待硬件中断 |
| 指令 | 描述 |
| CLC | 清除进位标志 |
| CLD | 清除十进制标志(二进制算术) |
| CLI | 启用中断请求 |
| CLV | 清除溢出标志 |
| REP | 复位状态位(例如,REP #%00100000 清除 M 标志) |
| SEC | 设置进位标志 |
| SED | 设置十进制标志(十进制算术) |
| SEP | 设置状态位(例如,SEP #%00010000 设置 X 标志) |
| SEI | 禁用中断请求 |
| XCE | 将进位标志与仿真标志交换 |
| 指令 | 描述 | |
| PHA | 压入累加器 | 压入指令 |
| PHX | 压入索引寄存器 X | |
| PHY | 压入索引寄存器 Y | |
| PHD | 压入直接页寄存器 | |
| PHB | 压入数据库寄存器 | |
| PHK | 压入程序库寄存器 | |
| PHP | 压入处理器状态 | |
| PEA | 压入有效地址 | |
| PEI | 压入有效间接地址 | |
| PER | 压入有效相对地址 | |
| PLA | 取出累加器 | 取出指令 |
| PLX | 取出索引寄存器 X | |
| PLY | 取出索引寄存器 Y | |
| PLP | 取出处理器状态 | |
| PLD | 取出直接页寄存器 | |
| PLB | 取出数据库寄存器 | |
| 模式 | 示例 |
| 隐式 | PHB |
| 立即[内存标志] | AND #1 或 2 字节 |
| 立即[索引标志] | LDX #1 或 2 字节 |
| 立即[8 位] | SEP #字节 |
| 相对 | BEQ 字节 (有符号) |
| 相对长 | BRL 2 字节 (有符号) |
| 直接 | AND 字节 |
| 直接索引(带 X) | AND 字节, x |
| 直接索引(带 Y) | AND 字节, y |
| 直接间接 | AND (字节) |
| 直接索引间接 | AND (字节, x) |
| 直接间接索引 | AND (字节), y |
| 直接间接长 | AND [字节] |
| 直接间接索引长 | AND [字节], y |
| 绝对 | AND 2 字节 |
| 绝对索引(带 X) | AND 2 字节, x |
| 绝对索引(带 Y) | AND 2 字节, y |
| 绝对长 | AND 3 字节 |
| 绝对索引长 | AND 3 字节, x |
| 堆栈相对 | AND 字节, s |
| 堆栈相对间接索引 | AND (字节, s), y |
| 绝对间接 | JMP (2 字节) |
| 绝对间接长 | JML [2 字节] |
| 绝对索引间接 | JMP/JSR (2 字节, x) |
| 隐式累加器 | INC |
| 块移动 | MVN/MVP 字节, 字节 |