165. 指令 bcs
实现“进位置位时分支”行为。
第 165 / 356 · tests/chapter_01_cpu/test_165_instruction_bcs.py
为什么需要这一步
寻址层已经完成了操作数的读取和符号转换,因此 BCS 只需根据进位标志进行选择,并把位移应用到下一条指令的 PC 上。
在这一步中,在第 164 课的 BCC 之后,请恰好添加
`emulator/cpu/instructions.py::bcs`::
def bcs(cpu: CPU, offset: int):
if cpu.flags.get_carry_flag():
cpu.pc = (cpu.pc + offset) & 0xFFFF掩码运算使溢出和下溢都能正确回绕到 16 位。
不变量:进位置位时发生分支;进位清零时 PC 保持不变。没有任何状态标志、其他寄存器或内存发生变化。常见误解:BCS 不会置位进位标志,进位清零时也不会分支;它只是读取该标志位。
超出范围:后续的分支指令函数属于第 166-171 课;所有分支操作码的导入、处理函数及表项属于第 172-179 课。
运行本课
uv run pytest tests/chapter_01_cpu/test_165_instruction_bcs.py -v