超级任天堂编程/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 字节, 字节 |