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