177. Bmi relativo
conectar BMI con su opcode relativo.
Lección 177 de 356 · tests/chapter_01_cpu/test_177_BMI_relative.py
Requisito previo: el paso 176 conectó BPL. En este paso, añade estas piezas a `emulator/cpu/opcodes.py`:
from emulator.cpu.instructions import bmi
def bmi_relative(cpu: CPU):
offset = relative(cpu)
bmi(cpu, offset)
OPCODE_TABLE[0x30] = bmi_relativeFusiona la importación y la asignación en las formas agrupadas ya existentes del archivo.
Por qué existe este paso
`relative se encarga de decodificar el operando, mientras que el instructions.bmi` del paso 169 interpreta "minus" como Negative activado y aplica el desplazamiento.
Invariantes: `0x30` consume su operando tanto si se toma el salto como si no; con Negative activado se salta relativo al PC posterior al operando, y con Negative desactivado se queda ahí. No cambia ninguna flag ni memoria. Idea errónea habitual: BMI comprueba el bit de estado Negative, no la negatividad del entero de Python del desplazamiento ni de ningún registro.
Fuera de alcance: la conexión de opcodes de BVC y BVS son los pasos 178 y 179. El direccionamiento JMP indirecto empieza en el paso 180.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_177_BMI_relative.py -v