165. Instrucción bcs
implementar el comportamiento de Branch if Carry Set.
Lección 165 de 356 · tests/chapter_01_cpu/test_165_instruction_bcs.py
Por qué existe este paso
La capa de direccionamiento ya ha consumido y aplicado el signo al operando, por lo que BCS solo selecciona según Carry y aplica el desplazamiento al PC de la siguiente instrucción.
En este paso, después de BCC en la lección 164, añade exactamente
`emulator/cpu/instructions.py::bcs`::
def bcs(cpu: CPU, offset: int):
if cpu.flags.get_carry_flag():
cpu.pc = (cpu.pc + offset) & 0xFFFFEl enmascarado hace que tanto el desbordamiento como el subdesbordamiento se ajusten a 16 bits.
Invariantes: con Carry activado se toma el salto; con Carry despejado, PC permanece sin cambios. Ningún flag de estado, otro registro o la memoria cambian. Concepto erróneo: BCS no activa Carry y no salta cuando Carry está despejado; simplemente lee ese flag.
Fuera de alcance: las siguientes funciones de instrucción de salto son las lecciones 166-171; todas las importaciones de opcodes de salto, manejadores y entradas de tabla son las lecciones 172-179.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_165_instruction_bcs.py -v