142. Eor 间接Y寻址

添加 EOR (indirect),Y 操作码 ``0x51``。

142 / 356 · tests/chapter_01_cpu/test_142_EOR_indirect_y.py

此步骤存在的原因

此步骤通过后索引的指针访问补全了 EOR 的寻址覆盖范围,先使用 indirect,Y 辅助函数,再将取到的值传递给 EOR 原语。

在此步骤中,第 141 课已经补全了另一种间接 EOR 形式。 请在 `emulator/cpu/opcodes.py` 中准确添加以下内容:

def eor_indirect_y(cpu: CPU):
    addr = indirect_y(cpu)
    value = cpu.bus.read(addr)
    or_e(cpu, value)

OPCODE_TABLE = {
    ...
    0x51: eor_indirect_y,
}

`emulator/cpu/addressing_modes.py::indirect_y 先从零页读取经零页回绕的小端序指针,再将 Y 加到该目标地址上。 处理函数读取最终得到的地址,并将其值传递给 or_e`。 A 与 Z/N 可能改变;Carry、Overflow、X、Y 和内存保持不变;PC 前进两个字节。

常见误解:Y 并不选择零页中的指针字节;它索引的是解码后的目标地址。 超出范围:BIT 的行为与操作码属于第 143-145 课。

运行本课

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