101. Lsr absolute x 寻址模式

接入 LSR Absolute,X(操作码 ``0x5E``)。

101 / 356 · tests/chapter_01_cpu/test_101_LSR_absolute_x.py

在本步骤中,只需在下方添加最后一个 LSR 寻址模式适配器和分派条目。指令原语以及第 095-100 课中的其他 LSR 模式是前置条件。

生产代码位置中的建议实现

`emulator/cpu/opcodes.py::lsr_absolute_x`::

def lsr_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    lsr(cpu, addr)

`emulator/cpu/opcodes.py::OPCODE_TABLE`::

0x5E: lsr_absolute_x,

本步骤存在的原因

操作码处理函数负责将编码后的操作数转换为有效地址;`instructions.lsr` 始终与寻址模式无关。

不变量:`absolute_x(cpu) 读取小端序的两字节操作数,加上 cpu.x,并使 PC 落在操作码之后第三个字节处;lsr 在该地址上执行读/改/写以及标志位更新。因此当 X=0x04 时,5E 00 02 指向 $0204`。

常见误解:操作数既不是要移位的值,也不是 8 位零页地址;不要只对其中一个操作数字节加 X,也不要调用 `lsr_a`。

不在本步骤范围内:ROL/ROR 的行为和操作码从第 102 课开始介绍;周期精度和跨页时序不属于本步骤内容。

运行本课

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