093. Asl 绝对寻址
添加 ASL Absolute。
第 93 / 356 · tests/chapter_01_cpu/test_093_ASL_absolute.py
在这一步中,将内存 ASL 扩展到已有的 16 位绝对寻址解析器。
文件与符号
emulator/cpu/opcodes.py: asl_absolute, OPCODE_TABLE[0x0E]为什么需要这一步
这次改动将同样的内存 ASL 行为从零页地址扩展到已有的 16 位 absolute 解析器;指令语义保持不变。
本步骤的建议实现
# emulator/cpu/opcodes.py
def asl_absolute(cpu: CPU):
addr = absolute(cpu)
asl(cpu, addr)
OPCODE_TABLE = {
# existing entries unchanged
0x0E: asl_absolute,
}重要不变量
absolute(cpu)先消耗低字节再消耗高字节,并返回一个 16 位地址- 包含操作码在内,这条三字节指令使 PC 前进三字节
asl读取并写回解析出的内存位置,并更新 C、Z、N- A 与 X 保持不变
常见误解
对于 0E 00 02,小端解码所指向的目标是 $0200,而不是 $0002。
本步骤不涉及
- 测试 094 中的 ASL Absolute,X
- 对绝对寻址或 ASL 语义的改动
- 周期时序
运行本课
uv run pytest tests/chapter_01_cpu/test_093_ASL_absolute.py -v