175. Bne с относительной адресацией

подключить BNE к её относительному опкоду.

Урок 175 из 356 · tests/chapter_01_cpu/test_175_BNE_relative.py

Предварительное условие: на шаге 174 был подключён BEQ. На этом шаге добавьте эти фрагменты в `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

Объедините импорт и элемент таблицы с их существующими сгруппированными формами.

Зачем нужен этот шаг

Слой опкодов считывает и декодирует смещение, а решение при сброшенном флаге нуля делегирует `instructions.bne` из шага 167.

Инварианты: `0xD0` всегда считывает один байт операнда; при сброшенном флаге нуля знаковое смещение применяется к PC после операнда, а при установленном флаге нуля этот PC остаётся неизменным. Обработчик не изменяет флаги и память. Заблуждение: BNE не выполняет сравнение, и невыполненный переход не должен оставлять PC на своём операнде.

Вне рамок этого шага: подключение опкодов BPL/BMI/BVC/BVS следует на шагах 176–179. Следующая возможность режимов адресации — косвенный JMP — это шаг 180.

Запустить этот урок

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