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