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