105. Rol zero page 零页寻址

接入 ROL Zero Page(操作码 ``0x26``)。

105 / 356 · tests/chapter_01_cpu/test_105_ROL_zero_page.py

在本步骤中,在第 104 课完成累加器接入之后,只添加零页适配器和表项。

生产代码位置中的完整示例实现

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

def rol_zero_page(cpu: CPU):
    addr = zero_page(cpu)
    rol(cpu, addr)

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

0x26: rol_zero_page,

本步骤存在的原因

操作码层负责解析操作数;第 102 课的原语负责读/改/写以及标志位。

不变量:`zero_page(cpu) 消耗一个操作数字节,并返回 $0000-$00FF 范围内的地址;26 10 旋转 RAM 中的 $0010`,最终 PC 为起始位置+2。A 保持不变,ROL 的 C/Z/N 规则得以保留。

常见误解:`$10` 是待旋转字节的地址,而不是字节值本身;不要旋转指令流中的操作数字节。

不在本步骤范围内:变址零页是第 106 课,绝对寻址模式是第 107-108 课,ROR 从第 109 课开始,精确的周期时序是之后的工作。

运行本课

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