164. Инструкция bcc

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

Урок 164 из 356 · tests/chapter_01_cpu/test_164_instruction_bcc.py

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

Урок 163 уже возвращает смещение со знаком и оставляет PC на следующей инструкции. BCC отвечает только за проверку сброшенного флага переноса и прибавление целевого смещения.

На этом шаге добавьте в точности эту реализацию в `emulator/cpu/instructions.py::bcc`:

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

Маска сохраняет 16-битное адресное пространство CPU.

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

Вне рамок этого шага: BCS/BEQ/BNE/BPL/BMI/BVC/BVS — уроки 165-171. Импорт функций ветвления в `emulator/cpu/opcodes.py`, обработчики относительной адресации и записи таблицы кодов операций относятся к урокам 172-179.

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

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