194. 隐含寻址的 Pha

注册隐含寻址的 PHA。

194 / 356 · tests/chapter_01_cpu/test_194_PHA_implied.py

前置条件:第 193 步已添加 `pha。在本步骤中,只修改 emulator/cpu/opcodes.py,导入 pha 并把它的条目加入 OPCODE_TABLE`。

本步骤存在的原因

PHA 的数据来源是 CPU 寄存器 A,因此操作码 $48 不需要寻址方式或操作数,可以直接分发给 `pha(cpu)`。

建议实现

from emulator.cpu.instructions import pha

OPCODE_TABLE = {
    # existing entries
    0x48: pha,
}

不变量:保留已有的映射;把 $48 精确映射到 `pha` 函数对象;只消耗操作码字节本身;把栈相关行为留给第 193 步的函数处理。

常见误解:$48 之后的字节是下一个操作码,而不是待压入的累加器值。

范围之外:实现 `pha` 属于第 193 步。PLA 从第 195 步开始;其余栈指令的映射属于它们各自后续的编号步骤。

运行本课

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