170. Инструкция bvc

реализовать поведение ветвления при сброшенном флаге переполнения.

Урок 170 из 356 · tests/chapter_01_cpu/test_170_instruction_bvc.py

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

BVC проверяет существующее условие переполнения знаковой арифметики и выполняет ветвление, когда этот флаг сброшен, не изменяя его.

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

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

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

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

Инварианты: при сброшенном флаге переполнения ветвление выполняется; при установленном флаге переполнения PC не изменяется. Инструкция не изменяет флаги, другие регистры или память. Заблуждение: BVC не сбрасывает флаг переполнения и не принимает решение по флагу переноса или знаку смещения.

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

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

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