174. Beq с относительной адресацией

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

Урок 174 из 356 · tests/chapter_01_cpu/test_174_BEQ_relative.py

Предварительное условие: на шаге 173 был подключён BCS. На этом шаге добавьте следующее в `emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import beq

def beq_relative(cpu: CPU):
    offset = relative(cpu)
    beq(cpu, offset)

OPCODE_TABLE[0xF0] = beq_relative

Импорт и сопоставление можно объединить с существующими сгруппированными структурами.

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

`relative предоставляет знаковое смещение относительно PC после операнда, а instructions.beq` из шага 166 выполняет переход, когда установлен существующий флаг нуля.

Инварианты: `0xF0 передаёт управление обработчику с одним аргументом и считывает свой операнд независимо от того, установлен флаг нуля или нет; +5 от 0x8002 приводит к 0x8007`. Флаги и память не изменяются. Заблуждение: BEQ сама не сравнивает значения; она лишь проверяет флаг нуля, установленный предыдущей операцией.

Вне рамок этого шага: подключение опкодов BNE/BPL/BMI/BVC/BVS относится к шагам 175–179; косвенная адресация JMP относится к шагу 180.

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

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