Уровень 21: Указатели

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

Задание

Цель: Подключите данные к ALU8.B через BusMUX: RAM → A, операнд ROM#1 → B. Важно: IX на этом уровне не подключается — его путь адресный (RAM.Addr), а не шина данных. Он заработает позже: выбор источника адреса через addrmux появится на уровнях 23+, первые задачи с IX — на уровнях 27–29.

На этом уровне в схему добавлен Индексный Регистр (IX) — специальный регистр для косвенной адресации.

Главная идея уровня: адрес может быть данным: IX хранит адрес, по которому процессор читает операнд, и это открывает косвенную адресацию — доступ к памяти по указателю, а не по зашитой константе. Так в машине появляется работа с массивами.

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

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

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

Что должно получиться: при Sel=0 ALU8.B получает данные из RAM, операнд приходит из ROM#1 — схема уровней 19–20 сохранена.

IX позволяет обращаться к памяти по адресу, который хранится в самом регистре (а не в операнде инструкции). Это полезно для работы с массивами и таблицами.

Физически «указатель» — это переключатель: BusMUX переключает источник данных для ALU8.B. Пока Sel=0, процессор видит на шине содержимое RAM по адресу из операнда. Если подать Sel=1, BusMUX передаст на ALU8.B непосредственный операнд из ROM#1 — этим сигналом позже управит дешифратор; прямое подключение IX к этому входу появилось на других уровнях. Меняется не адресная шина — меняется источник данных в пути данных АЛУ.

Задачи: 1. BusConstant = 2 → PC.Inc (как в уровнях 19–20). 2. ROM#1.Data → RAM.Addr (как в уровне 20). 3. Подключите данные к ALU8.B (порт 1). Используйте BusMUX: RAM.DataOut → BusMUX.A, ROM#1.Data → BusMUX.B. Sel пока не трогайте (Sel=0 выбирает данные RAM; Sel=1 выбрал бы непосредственный операнд ROM#1 — этим сигналом позже управит дешифратор).

IX уже подключён к тактовому сигналу (Clock). На уровнях 27–29 IX полностью работоспособен и управляется инструкциями: - LDX N — загрузить в IX значение N - INX — увеличить IX на 1 - LDAX — загрузить в Acc значение из RAM[IX] - STAX — сохранить Acc в RAM[IX]

Схема решения уровня 21 — Указатели
Авторское решение уровня 21 в симуляторе (тёмная тема)

Проверь себя

Почему на этом уровне IX не подключается к шине данных?

Путь IX — адресный (RAM.Addr), а не шина данных; управляющий сигнал Sel для переключения источника данных появится у дешифратора на следующих уровнях, первые задачи с IX — уровни 27–29.