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

Открыть уровень →

Задание

Добавьте Index Register (IX) для косвенной адресации. Реализуйте LDX, LDAX, STAX, INX в декодере.

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

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

Решение

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

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

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

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

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