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) & 0xFFFF

La 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