100. Lsr 绝对寻址
添加 LSR Absolute。
第 100 / 356 · tests/chapter_01_cpu/test_100_LSR_absolute.py
在这一步中,通过已有的 16 位绝对寻址解析器暴露内存 LSR。
文件与符号
emulator/cpu/opcodes.py: lsr_absolute, OPCODE_TABLE[0x4E]为什么需要这一步
在完成零页形式之后,这次改动通过已有的 16 位 absolute 解析器暴露内存 LSR,同时保留指令层的实现。
本步骤的建议实现
# emulator/cpu/opcodes.py
def lsr_absolute(cpu: CPU):
addr = absolute(cpu)
lsr(cpu, addr)
OPCODE_TABLE = {
# existing entries unchanged
0x4E: lsr_absolute,
}重要不变量
absolute(cpu)先解码低字节再解码高字节- 两个操作数字节使这成为一条三字节指令
lsr读取并写回有效地址,并替换 C/Z/N- A 与索引寄存器保持不变
常见误解
对于 4E 00 02,小端目标地址是 $0200,而不是 $0002。
本步骤不涉及
- 测试 101 中的 LSR Absolute,X
- 对绝对寻址或 LSR 行为的改动
- 周期时序与跨页行为
运行本课
uv run pytest tests/chapter_01_cpu/test_100_LSR_absolute.py -v