036. stx 指令

添加核心 STX 指令。

36 / 356 · tests/chapter_01_cpu/test_036_instruction_stx.py

要更新的文件

emulator/cpu/instructions.py

位置

instructions.stx, beside ldx

为什么需要这一步

STX 引入与 LDX 相对应的存储指令。它遵循 STA 确立的边界:核心指令接收一个已解析好的目标地址,并通过 CPU 总线写入寄存器的值,且不改变标志。

完整示例实现

# emulator/cpu/instructions.py
def stx(cpu: CPU, address: int):
    value = cpu.x
    cpu.bus.write(address, value)

重要不变式

  • stx 接收的是地址,不是值
  • 写入的值是 X,且写入通过 cpu.bus.write 进行
  • X 和处理器标志保持不变

常见误区

不要根据 X 更新 Zero 或 Negative。存储指令只写入内存,即使被存储的字节是 $00 或第 7 位为 1。

超出范围

  • 所有 STX 操作码处理函数和操作码表项
  • 对寻址模式辅助函数的改动
  • 周期时序和写入侧硬件效应

运行本课

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