038. Stx 零页Y变址
添加 STX 零页Y变址($96)。
第 38 / 356 · tests/chapter_01_cpu/test_038_STX_zero_page_y.py
要更新的文件
emulator/cpu/opcodes.py位置
opcodes.stx_zero_page_y
opcodes.OPCODE_TABLE[$96]为什么需要这一步
本课复用测试 029 中首次引入的零页Y变址辅助函数,添加 STX 的零页变址编码。地址计算仍然与核心存储操作相分离。
完整示例实现
# emulator/cpu/opcodes.py
def stx_zero_page_y(cpu: CPU):
addr = zero_page_y(cpu)
stx(cpu, addr)
OPCODE_TABLE = {
# Preserve existing entries.
0x96: stx_zero_page_y,
}重要不变式
- $96 映射到 stx_zero_page_y
- 对单字节操作数进行变址的是 Y,而不是 X
- 基地址加 Y 在 $00 页内回绕
- stx 写入的值是 X,且 Zero 和 Negative 保持不变
常见误区
被存储的寄存器并不会决定变址寄存器。STX $nn,Y 存储的是 X,但用 Y 来计算目标地址。
超出范围
- 绝对寻址 STX
- 对 zero_page_y 或 stx 的改动
- 周期时序
运行本课
uv run pytest tests/chapter_01_cpu/test_038_STX_zero_page_y.py -v