164. Instrucción bcc
implementar el comportamiento de Branch if Carry Clear.
Lección 164 de 356 · tests/chapter_01_cpu/test_164_instruction_bcc.py
Por qué existe este paso
La lección 163 ya devuelve un desplazamiento con signo y deja PC en la siguiente instrucción. BCC solo se encarga de la decisión de Carry despejado y de la suma del destino.
En este paso, añade exactamente esta implementación a `emulator/cpu/instructions.py::bcc`:
def bcc(cpu: CPU, offset: int):
if not cpu.flags.get_carry_flag():
cpu.pc = (cpu.pc + offset) & 0xFFFFLa máscara preserva el espacio de direcciones de 16 bits de la CPU.
Invariantes: con Carry despejado se suma un `offset positivo, cero o negativo módulo 0x10000`; con Carry activado, PC permanece sin cambios. Los flags, los registros distintos de PC y la memoria no se tocan. Concepto erróneo: BCC significa Carry *despejado*, y no debe capturar ni convertir con signo el operando dentro de esta función de instrucción.
Fuera de alcance: BCS/BEQ/BNE/BPL/BMI/BVC/BVS son las lecciones 165-171. Importar las funciones de salto a `emulator/cpu/opcodes.py`, los manejadores relativos y las entradas de la tabla de opcodes pertenecen a las lecciones 172-179.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_164_instruction_bcc.py -v