178. Bvc relativo

conectar BVC con su opcode relativo.

Lección 178 de 356 · tests/chapter_01_cpu/test_178_BVC_relative.py

Requisito previo: el paso 177 conectó BMI. En este paso, añade lo siguiente a `emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import bvc

def bvc_relative(cpu: CPU):
    offset = relative(cpu)
    bvc(cpu, offset)

OPCODE_TABLE[0x50] = bvc_relative

La importación y la entrada deben unirse a la importación y al literal de tabla ya agrupados.

Por qué existe este paso

El gestor decodifica un operando con signo, y luego el `instructions.bvc` del paso 170 toma la decisión de salto con Overflow desactivado.

Invariantes: el opcode `0x50` siempre consume su operando; con Overflow desactivado se aplica el desplazamiento desde el PC posterior al operando, y con Overflow activado PC se queda ahí. No se modifica ninguna flag ni memoria. Idea errónea habitual: BVC no desactiva Overflow ni deriva el desbordamiento del desplazamiento de salto; solo observa la flag actual.

Fuera de alcance: la conexión de opcode de BVS es el paso 179. El direccionamiento JMP indirecto continúa como paso 180.

Ejecutar esta lección

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