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