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_x 和 OPCODE_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