181. jmp 指令

添加与寻址方式无关的 JMP 行为。

181 / 356 · tests/chapter_01_cpu/test_181_instruction_jmp.py

在本步骤中,向 `emulator/cpu/instructions.py::jmp` 添加以下内容:

指令

JMP -> PC = target_address

目标

在 instructions.py 中实现 jmp(cpu, addr)。

学习指引

JMP 直接改变程序计数器。它本身不读取内存,也不修改标志位。

重要提示

PC 是一个 16 位寄存器,因此要保证所赋的地址始终落在 0x0000..0xFFFF 范围内:

cpu.pc = addr & 0xFFFF

本步骤存在的原因

寻址方式负责解析目的地址;指令原语只是将该地址装入 PC。不变量:PC 会被掩码到 16 位,而状态、寄存器、栈和内存均保持不变。常见误解:`addr` 并不是一个需要加载其字节内容的内存位置。

本步骤范围之外:把 `jmp 导入 emulator/cpu/opcodes.py` 并接入绝对/间接寻址的处理函数与表项,是第 182-183 步的内容。JSR 从第 184 步开始。

运行本课

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