201. 指令 txs

实现 TXS 操作。

201 / 356 · tests/chapter_01_cpu/test_201_instruction_txs.py

本步骤存在的原因

在本步骤中,添加 `emulator/cpu/instructions.py::txs`。之所以现在引入这个操作,是因为栈传送是剩余的栈指令行为:将 X 复制到栈指针字节,且不产生内存访问。

建议实现

def txs(cpu: CPU):
    cpu.s = cpu.x

不变式:X、P、PC、A、Y 以及内存均保持不变;S 仍然是已建立的 $0100-$01FF 栈页内的低字节偏移量。一个常见的误解是像其他寄存器传送指令那样更新 Zero 和 Negative 标志;TXS 不改变任何标志,即使 X 为 $00 或第 7 位被置位也是如此。

范围之外:在 `emulator/cpu/opcodes.py::OPCODE_TABLE` 中注册隐含寻址操作码 $9A 属于步骤 202;TSX 及其操作码属于步骤 203-204。此处不要添加那些后续的 API。

运行本课

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