085. Iny 隐含寻址

接入 INY 隐含寻址操作码。

85 / 356 · tests/chapter_01_cpu/test_085_INY_implied.py

在这一步中,使用测试 084 中的 instructions.iny,仅添加分发逻辑。

生产代码位置与符号

emulator/cpu/opcodes.py: imported `iny` and `OPCODE_TABLE[0xC8]`

本步骤存在的原因

由于 Y 是 INY 的隐含操作数,操作码表可以直接分发到指令函数,而无需解码操作数。

本步骤的实现建议

# emulator/cpu/opcodes.py
from emulator.cpu.instructions import iny  # alongside existing imports

OPCODE_TABLE = {
    # ... existing entries ...
    0xC8: iny,
}

重要不变量

  • 操作码 0xC8 映射到精确的 iny(cpu) 函数
  • 这条单字节指令将 PC 推进一位
  • 回绕及 Z/N 行为仍保留在测试 084 的指令函数中

常见误解

不要仅仅因为表需要一个可调用对象就使用 immediate(cpu);INY 没有操作数字节,立即数解码会破坏 PC。

不在本步骤范围内

  • DEY 行为及操作码映射(测试 086-087)
  • 后续的 ASL 指令形式
  • 周期计时

运行本课

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