079. Dec 绝对寻址,X
接入 DEC 绝对寻址,X(`0xDE`)。
第 79 / 356 · tests/chapter_01_cpu/test_079_DEC_absolute_x.py
在本步骤中,在第 076-078 课的 DEC 相关工作之后,添加 emulator/cpu/opcodes.py:dec_absolute_x 和 OPCODE_TABLE[0xDE]。
本步骤存在的原因
把已有的绝对-X 地址解析器与 DEC 原语组合使用,而不是重复实现索引运算、总线访问或标志位逻辑。
在 emulator/cpu/opcodes.py 中的建议实现:
def dec_absolute_x(cpu: CPU):
addr = absolute_x(cpu)
dec(cpu, addr)在现有的 OPCODE_TABLE 中添加这条完全一致的条目:
0xDE: dec_absolute_x,不变量:两字节基址采用小端格式;X 只参与有效地址的解析,自身保持不变;允许跨页;PC 前进两个操作数字节;DEC 存储一个 8 位结果,并只改变 Z/N。
常见误解:该指令递减的是 base + X 处的内存,而不是 X 寄存器本身。寄存器递减是之后的 DEX 指令。
范围之外:INX/DEX 原语及其隐含寻址操作码是第 080-083 课的内容;周期计算不属于本步骤。
运行本课
uv run pytest tests/chapter_01_cpu/test_079_DEC_absolute_x.py -v