168. Инструкция bpl

реализовать поведение ветвления при положительном результате.

Урок 168 из 356 · tests/chapter_01_cpu/test_168_instruction_bpl.py

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

В терминологии 6502 "плюс" означает, что существующий флаг знака сброшен, поэтому BPL принимает решение по этому флагу, а не проверяет смещение или PC.

На этом шаге, после BNE, добавьте в точности

`emulator/cpu/instructions.py::bpl`::

def bpl(cpu: CPU, offset: int):
    if not cpu.flags.get_negative_flag():
        cpu.pc = (cpu.pc + offset) & 0xFFFF

Функция применяет декодированное смещение со знаком к PC после операнда и маскирует результат до 16-битного адресного пространства.

Инварианты: при сброшенном флаге знака ветвление выполняется; при установленном флаге знака PC не изменяется. Флаги, другие регистры и память не изменяются. Заблуждение: BPL не проверяет, положительны ли PC или `offset`, и не пересчитывает флаг знака.

Вне рамок этого шага: BMI/BVC/BVS — уроки 169-171. Импорты кодов операций, обработчики относительной адресации и записи таблицы — уроки 172-179.

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

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