094. Asl 绝对,X 寻址
添加 ASL Absolute,X。
第 94 / 356 · tests/chapter_01_cpu/test_094_ASL_absolute_x.py
在这一步中,用 Absolute,X 完成 ASL 寻址序列。
文件与符号
emulator/cpu/opcodes.py: asl_absolute_x, OPCODE_TABLE[0x1E]为什么需要这一步
这是最后一个 ASL 寻址方面的改动。它将已有的 absolute_x 解析器与此前引入的内存 asl 实现组合在一起。
本步骤的建议实现
# emulator/cpu/opcodes.py
def asl_absolute_x(cpu: CPU):
addr = absolute_x(cpu)
asl(cpu, addr)
OPCODE_TABLE = {
# existing entries unchanged
0x1E: asl_absolute_x,
}重要不变量
- 先解码小端 16 位基址,再加上 X
- 指令仍为三字节;X 是寄存器,而不是另一个操作数
asl在有效地址上负责读取/修改/写回以及标志位更新- 累加器保持不变
常见误解
对于 X=0x04 时的 1E 00 02,应将 X 加到 $0200 上,而不是加到任何一个操作数字节上。
本步骤不涉及
- 测试 095-101 引入的 LSR
- 修改
absolute_x或asl - 跨页与读取/修改/写回周期时序
运行本课
uv run pytest tests/chapter_01_cpu/test_094_ASL_absolute_x.py -v