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