026. Sta 绝对Y寻址

添加绝对,Y的STA($99)。

26 / 356 · tests/chapter_01_cpu/test_026_STA_absolute_y.py

需要更新的文件

emulator/cpu/opcodes.py

位置

opcodes.sta_absolute_y
opcodes.OPCODE_TABLE[$99]

为什么需要这一步

这是测试025的Y索引对应版本。它复用 absolute_y,使处理函数只需协调目标地址解析与已有的 sta 写入操作。

完整示例实现

# emulator/cpu/opcodes.py
def sta_absolute_y(cpu) -> None:
    address = absolute_y(cpu)
    sta(cpu, address)


OPCODE_TABLE = {
    # Preserve existing entries.
    0x99: sta_absolute_y,
}

重要不变量

  • 两个操作数字节先组成基址,再加上Y
  • 选择最终目标地址的是Y,而不是X
  • 完整的索引后地址会传给sta
  • STA不更新标志位

常见误解

如果照搬绝对,X的处理函数而不改动寻址辅助函数,当X和Y不同时会悄悄使用错误的索引寄存器。

不在本课范围内

  • 间接寻址的STA操作码
  • 跨页周期行为
  • 对absolute_y或sta的修改

运行本课

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