179. Bvs relativo

conectar BVS con su opcode relativo.

Lección 179 de 356 · tests/chapter_01_cpu/test_179_BVS_relative.py

Requisito previo: el paso 171 añadió `instructions.bvs. En este paso, añade estas piezas a emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import bvs

def bvs_relative(cpu: CPU):
    offset = relative(cpu)
    bvs(cpu, offset)

OPCODE_TABLE[0x70] = bvs_relative

Integra la importación y la asignación en las estructuras agrupadas ya existentes.

Por qué existe este paso

`relative consume y aplica el signo al desplazamiento, y luego el instructions.bvs` del paso 171 salta desde el PC posterior al operando cuando Overflow está activado.

Invariantes: `0x70` se asigna a un gestor de un argumento y consume su operando en ambos caminos; con Overflow activado se aplica el desplazamiento, y con Overflow desactivado PC se queda tras el operando. Las flags y la memoria no cambian. Idea errónea habitual: BVS no activa Overflow, y un salto no tomado sigue ocupando y consumiendo dos bytes de instrucción, incluido su opcode.

Fuera de alcance: el paso 180 añade de forma independiente `addressing_modes.indirect para JMP. La instrucción jmp` y las API de opcode JMP absoluto/indirecto llegan solo en los pasos posteriores 181-183 y no deben añadirse aquí.

Ejecutar esta lección

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