170. Instrucción bvc

implementar el comportamiento de Branch if Overflow Clear.

Lección 170 de 356 · tests/chapter_01_cpu/test_170_instruction_bvc.py

Por qué existe este paso

BVC observa la condición Overflow de la aritmética con signo existente y salta cuando ese flag está despejado, sin modificarlo.

En este paso, después de BMI, añade exactamente

`emulator/cpu/instructions.py::bvc`::

def bvc(cpu: CPU, offset: int):
    if not cpu.flags.get_overflow_flag():
        cpu.pc = (cpu.pc + offset) & 0xFFFF

Si está despejado, suma el desplazamiento relativo con signo al PC posterior al operando y enmascara el destino dentro del espacio de direcciones de 16 bits.

Invariantes: con Overflow despejado se toma el salto; con Overflow activado, PC permanece sin cambios. La instrucción no cambia flags, otros registros ni la memoria. Concepto erróneo: BVC ni despeja Overflow ni decide a partir de Carry o del signo del desplazamiento.

Fuera de alcance: el complementario BVS es la lección 171. Las importaciones de saltos, los manejadores de opcode relativos y las entradas de tabla son las lecciones 172-179.

Ejecutar esta lección

uv run pytest tests/chapter_01_cpu/test_170_instruction_bvc.py -v