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