090. Asl 累加器
接入 ASL 累加器操作码。
第 90 / 356 · tests/chapter_01_cpu/test_090_ASL_accumulator.py
在这一步中,使用测试 089 中的 asl_a,仅添加累加器分发。测试 091-094 会添加内存形式。
生产代码位置与符号
emulator/cpu/opcodes.py: imported `asl_a` and `OPCODE_TABLE[0x0A]`本步骤存在的原因
操作码 0x0A 选中的是累加器本身,因此分发可以直接调用 asl_a(cpu),而无需解析内存地址。
本步骤的实现建议
# emulator/cpu/opcodes.py
from emulator.cpu.instructions import asl_a # alongside existing imports
OPCODE_TABLE = {
# ... existing entries ...
0x0A: asl_a,
}重要不变量
- 操作码 0x0A 映射到精确的
asl_a(cpu)函数 - 不发生任何寻址辅助或内存读写
- 这条单字节指令恰好将 PC 推进一位
- 测试 089 的函数负责 A 的掩码处理以及 C/Z/N 更新
常见误解
ASL A 并不是省略了操作数的零页 ASL;它是一种独立的累加器形式,因此不需要 asl_* 寻址包装器。
不在本步骤范围内
asl_zero_page、asl_zero_page_x、asl_absolute以及asl_absolute_x- 测试 091-094 中的映射 0x06、0x16、0x0E 以及 0x1E
- 周期计时以及总线精确的读-改-写行为
运行本课
uv run pytest tests/chapter_01_cpu/test_090_ASL_accumulator.py -v