077. Dec 零页,X
接入 DEC 零页,X(`0xD6`)。
第 77 / 356 · tests/chapter_01_cpu/test_077_DEC_zero_page_x.py
在本步骤中,dec 已由第 076 课导入,只需添加 emulator/cpu/opcodes.py:dec_zero_page_x 和 OPCODE_TABLE[0xD6]。
本步骤存在的原因
把索引零页地址的计算委托给现有的寻址辅助函数,把内存变更委托给现有的 DEC 原语。
在 emulator/cpu/opcodes.py 中的建议实现:
def dec_zero_page_x(cpu: CPU):
addr = zero_page_x(cpu)
dec(cpu, addr)在现有的 OPCODE_TABLE 中添加这条完全一致的条目:
0xD6: dec_zero_page_x,不变量:消耗一个操作数字节;基址加 X 在零页范围内于 $FF 处环绕;PC 前进到下一条两字节指令;DEC 写入一个 8 位结果,并只更新 Z/N。
常见误解:当 X=1 时,$FF,X 并不指向 $0100;在 DEC 运行之前,零页索引寻址会先解析出 $0000。
范围之外:dec_absolute/0xCE 和 dec_absolute_x/0xDE 是第 078-079 课的内容。
运行本课
uv run pytest tests/chapter_01_cpu/test_077_DEC_zero_page_x.py -v