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_pageasl_zero_page_xasl_absolute 以及 asl_absolute_x
  • 测试 091-094 中的映射 0x06、0x16、0x0E 以及 0x1E
  • 周期计时以及总线精确的读-改-写行为

运行本课

uv run pytest tests/chapter_01_cpu/test_090_ASL_accumulator.py -v