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_relativeFusiona 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