075. Inc 绝对寻址,X

接入 INC 绝对寻址,X(`0xFE`)。

75 / 356 · tests/chapter_01_cpu/test_075_INC_absolute_x.py

在本步骤中,在第 071-074 课的其他 INC 形式之后,添加 emulator/cpu/opcodes.py:inc_absolute_xOPCODE_TABLE[0xFE]

本步骤存在的原因

复用 addressing_modes.absolute_x,使基址解码和 X 索引运算保持在 INC 读-改-写原语之外。

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

def inc_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    inc(cpu, addr)

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

0xFE: inc_absolute_x,

不变量:消耗两个小端操作数字节;X 被加到 16 位基址上;取指后 PC 前进两个字节,使指令总长度为三个字节;解析出的内存字节以 256 为模进行环绕;只有 Z/N 会随之更新。

常见误解:绝对-X 索引不使用零页环绕。它可能跨越页边界,因此当 X=1 时,$02FF,X 解析为 $0300

范围之外:DEC 从第 076 课开始。周期计数和跨页时序相关工作不属于本步骤。

运行本课

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