Уровень 19: Шаг вперёд (PC+2)

Открыть уровень →Где это в машине →

Задание

Цель: Подключите BusConstant(2) к входу Inc счётчика команд, чтобы PC шагал на +2 вместо +1.

С 19-го уровня архитектура переходит на word-формат: каждая инструкция занимает 2 байта (байт 0 = опкод, байт 1 = операнд 0–255).

Главная идея уровня: шаг счётчика команд обязан совпадать с размером инструкции: как только команда занимает два байта, PC шагает на +2, иначе попадёт в середину слова. Формат машинного слова диктует аппаратуре, куда двигаться.

Материалы по теме

Решение для самопроверки

Сначала попробуйте собрать схему сами. Решение ниже — способ свериться, если застряли или уже справились.

Что должно получиться: при каждом такте PC увеличивается на 2: 0, 2, 4, 6… — каждый чётный адрес начинает новую инструкцию.

Поэтому счётчик команд (PC) должен шагать не на +1, а на +2.

У ProgramCounter есть вход Inc (порт 4) — он определяет, на сколько PC увеличивается при каждом такте. По умолчанию, если вход не подключён, Inc = +1.

Задача:

  1. Найдите на холсте BusConstant (серый блок с надписью): значение 2 в нём уже предустановлено. Виджет значения правится двойным щелчком, если захотите поэкспериментировать.
  2. Соедините выход BusConstant (Q) с входом Inc у ProgramCounter (порт 4, подписан «Inc»).

Теперь PC будет шагать на +2, идя по чётным адресам: 0, 2, 4, 6… — каждый чётный адрес начинает новую инструкцию word-формата (нечётный байт — её операнд).

Схема решения уровня 19 — Шаг вперёд (PC+2)
Авторское решение уровня 19 в симуляторе (тёмная тема)

Проверь себя

Почему PC шагает именно на +2, а не на +1?

В word-формате инструкция занимает 2 байта: шаг +2 попадает в начало следующей команды, а не в середину слова.