074. Inc 绝对寻址
接入 INC 绝对寻址(`0xEE`)。
第 74 / 356 · tests/chapter_01_cpu/test_074_INC_absolute.py
在本步骤中,inc 已经完成导入,只需添加 emulator/cpu/opcodes.py:inc_absolute 和 OPCODE_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_x 和 OPCODE_TABLE[0xFE] 是第 075 课的内容。
运行本课
uv run pytest tests/chapter_01_cpu/test_074_INC_absolute.py -v