113. 零页,X ROR

添加 ROR 零页,X 操作码 ``0x76``。

113 / 356 · tests/chapter_01_cpu/test_113_ROR_zero_page_x.py

在这一步中,在第 112 课已导入 `ror 的基础上,只在 emulator/cpu/opcodes.py` 中添加变址零页的处理函数和表条目。

为什么需要这一步

变址零页 ROR 必须先把 X 与 8 位基址结合起来(包括零页回绕),然后再应用已经确立的旋转规则。

建议实现

def ror_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    ror(cpu, addr)

OPCODE_TABLE = {
    ...
    0x76: ror_zero_page_x,
}

`emulator/cpu/addressing_modes.py::zero_page_x 取出基址字节并计算 (base + cpu.x) & 0xFFinstructions.ror 负责内存读写以及 C/Z/N 的变化。这里的不变量是零页回绕:基址 0xFE 加上 X 值 0x03 应指向 0x0001,而不是 0x0101`;PC 前进两个字节,A 不变。

误解澄清:普通的整数加法不足以完成零页变址。本课不涉及的内容:绝对寻址和绝对,X 的 ROR(第 114-115 课),以及任何新的旋转实现或寻址辅助函数。

运行本课

uv run pytest tests/chapter_01_cpu/test_113_ROR_zero_page_x.py -v