138. 绝对寻址 EOR

添加 EOR absolute 操作码 ``0x4D``。

138 / 356 · tests/chapter_01_cpu/test_138_EOR_absolute.py

此步骤存在的原因

绝对寻址的 EOR 允许对任意 CPU 内存位置执行异或运算,同时将小端序地址解码保留在指令原语之外。

在此步骤中,继两种零页寻址形式之后,请在 `emulator/cpu/opcodes.py` 中准确添加以下内容:

def eor_absolute(cpu: CPU):
    addr = absolute(cpu)
    value = cpu.bus.read(addr)
    or_e(cpu, value)

OPCODE_TABLE = {
    ...
    0x4D: eor_absolute,
}

`emulator/cpu/addressing_modes.py::absolute 使用 CPU.fetch_word 先解码低字节再解码高字节。处理函数读取由此得到的地址,并将 XOR 运算及 Z/N 标志位委托给 instructions.or_e`。Carry/Overflow、内存、X 和 Y 保持不变;操作码加字使 PC 前进三个字节。

常见误解:该小端序字是数值所在的位置,而不是数值本身。不在本步骤范围内:变址/间接寻址的 EOR 模式(第 139-142 课)以及 BIT(第 143-145 课)。

运行本课

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