167. Instrucción bne
implementar el comportamiento de Branch if Not Equal.
Lección 167 de 356 · tests/chapter_01_cpu/test_167_instruction_bne.py
Por qué existe este paso
Zero despejado registra un resultado no igual de una operación anterior, por lo que BNE puede saltar sin realizar otra comparación.
En este paso, añade exactamente esta implementación
`emulator/cpu/instructions.py::bne`::
def bne(cpu: CPU, offset: int):
if not cpu.flags.get_zero_flag():
cpu.pc = (cpu.pc + offset) & 0xFFFFLa función aplica el desplazamiento con signo al PC ya avanzado y restringe el destino a 16 bits.
Invariantes: con Zero despejado se toma el salto, incluyendo el subdesbordamiento o desbordamiento con ajuste; con Zero activado, PC permanece sin cambios. Los flags, otros registros y la memoria permanecen intactos. Concepto erróneo: BNE comprueba Zero, no Negative, y no realiza una comparación ni captura un operando.
Fuera de alcance: BPL/BMI/BVC/BVS son las lecciones 168-171. Las importaciones de opcodes de salto, los manejadores y las entradas de tabla se posponen a las lecciones 172-179.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_167_instruction_bne.py -v