209. Nop 隐含寻址

接通官方隐含寻址 NOP 操作码 $EA。

209 / 356 · tests/chapter_01_cpu/test_209_NOP_implied.py

本步骤存在的原因

在本步骤中,更新 `emulator/cpu/opcodes.py 的指令导入以及 OPCODE_TABLEemulator/cpu/instructions.py::nop` 已在步骤 208 中存在。该映射使 CPU.step 能够在真实程序中执行填充指令。

建议实现

from emulator.cpu.instructions import nop  # add to the existing import

OPCODE_TABLE = {
    # existing entries
    0xEA: nop,
}

不变式:$EA 为单字节指令,因此从 $8000 开始的一步会结束于 $8001,这完全是因为 CPU.step 取指了该操作码;寄存器、S、P 和内存均保持不变。常见的误解是在 `nop` 中递增 PC,或者取一个虚构的操作数。

范围之外:非官方的多字节 NOP 操作码以及时序变化属于后续步骤。多指令 CPU 验证属于步骤 210。

运行本课

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