175. Bne relativo

conectar BNE con su opcode relativo.

Lección 175 de 356 · tests/chapter_01_cpu/test_175_BNE_relative.py

Requisito previo: el paso 174 conectó BEQ. En este paso, añade estas piezas a `emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import bne

def bne_relative(cpu: CPU):
    offset = relative(cpu)
    bne(cpu, offset)

OPCODE_TABLE[0xD0] = bne_relative

Fusiona la importación y el elemento de tabla en sus formas agrupadas ya existentes.

Por qué existe este paso

La capa de opcodes consume y decodifica el desplazamiento, y luego delega la decisión de Zero desactivado al `instructions.bne` del paso 167.

Invariantes: `0xD0` siempre consume un byte de operando; con Zero desactivado se aplica el desplazamiento con signo al PC posterior al operando, y con Zero activado ese PC no cambia. El gestor no cambia ninguna flag ni memoria. Idea errónea habitual: BNE no realiza ninguna comparación, y un salto no tomado no debe dejar PC sobre su operando.

Fuera de alcance: la conexión de opcodes de BPL/BMI/BVC/BVS sigue en los pasos 176-179. La siguiente característica de modo de direccionamiento, JMP indirecto, es el paso 180.

Ejecutar esta lección

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