074. Inc 绝对寻址

接入 INC 绝对寻址(`0xEE`)。

74 / 356 · tests/chapter_01_cpu/test_074_INC_absolute.py

在本步骤中,inc 已经完成导入,只需添加 emulator/cpu/opcodes.py:inc_absoluteOPCODE_TABLE[0xEE]

本步骤存在的原因

addressing_modes.absolute 集中处理两字节地址的小端解码,而现有的 INC 原语负责执行读-改-写。

emulator/cpu/opcodes.py 中的建议实现:

def inc_absolute(cpu: CPU):
    addr = absolute(cpu)
    inc(cpu, addr)

在现有的 OPCODE_TABLE 中添加这条完全一致的条目:

0xEE: inc_absolute,

不变量:低位操作数字节在高位字节之前;absolute(cpu) 消耗这两个字节,并使 PC 前进两次;EE 00 02 指向 $0200;指令总长度为三个字节;INC 更新内存和 Z/N,而不更新寄存器、Carry 或 Overflow。

常见误解:不要颠倒操作数字节的顺序,也不要把取到的字节值传给 inc;该辅助函数返回的是有效的 16 位地址。

范围之外:inc_absolute_xOPCODE_TABLE[0xFE] 是第 075 课的内容。

运行本课

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