141. Eor 间接X寻址

添加 EOR (indirect,X) 操作码 ``0x41``。

141 / 356 · tests/chapter_01_cpu/test_141_EOR_indirect_x.py

此步骤存在的原因

预索引间接 EOR 能够通过零页访问指针表,同时保持有效地址解析与异或运算之间的分离。

在此步骤中,第 134-140 课已经提供了 `or_e、其操作码导入以及此前的各 EOR 寻址模式。 请在 emulator/cpu/opcodes.py` 中准确添加以下内容:

def eor_indirect_x(cpu: CPU):
    addr = indirect_x(cpu)
    value = cpu.bus.read(addr)
    or_e(cpu, value)

OPCODE_TABLE = {
    ...
    0x41: eor_indirect_x,
}

`emulator/cpu/addressing_modes.py::indirect_x 将 X 加到零页中的操作数上,读取经零页回绕的小端序指针,并返回其目标地址。 处理函数读取该目标地址,并将异或语义委托给 emulator/cpu/instructions.py::or_e`。 A 与 Z/N 可能改变;Carry、Overflow、X、Y 和内存保持不变;操作码加操作数使 PC 前进两个字节。

常见误解:X 是对零页指针位置进行索引,而不是对最终目标地址进行索引。 超出范围:EOR (indirect),Y 属于第 142 课;BIT 从第 143 课开始。

运行本课

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