136. 零页 EOR
添加 EOR zero-page 操作码 ``0x45``。
第 136 / 356 · tests/chapter_01_cpu/test_136_EOR_zero_page.py
此步骤存在的原因
EOR 需要一种紧凑的内存寻址形式,将其操作数解释为零页地址,读取该位置,并应用通用的异或行为。
在此步骤中,`or_e 和 EOR immediate 已经存在。请在 emulator/cpu/opcodes.py` 中准确添加以下内容:
def eor_zero_page(cpu: CPU):
addr = zero_page(cpu)
value = cpu.bus.read(addr)
or_e(cpu, value)
OPCODE_TABLE = {
...
0x45: eor_zero_page,
}`emulator/cpu/addressing_modes.py::zero_page 获取单字节地址;处理函数执行单独的数据读取,并将该值传给 instructions.or_e`。A 与 Z/N 可能改变;Carry/Overflow、内存、X 和 Y 保持不变;操作码加操作数使 PC 前进两个字节。
常见误解:`$nn` 是零页中的一个地址,而不是字面量的 XOR 值。不在本步骤范围内:变址及更宽的 EOR 寻址模式(第 137-142 课)以及 BIT(第 143-145 课)。
运行本课
uv run pytest tests/chapter_01_cpu/test_136_EOR_zero_page.py -v