logo
Кафедра “Системы автоматического управления”

7.3 Многокомпонентные способы адресации.

При многокомпонентных способах адресации для построения исполнительного адреса используется несколько источников адресной информации, содержимое которых суммируется. Каждое слагаемое - это прямо или косвенно заданный адресный компонент (возможен вариант компонента с автомодификацией). В двухкомпонентном случае практический интерес представляют следующие комбинации способов адресации:

- прямая + косвенная регистровая;

- косвенная регистровая + косвенная регистровая.

Схемы двухкомпонентных способов адресации приведены на рис. 7.5.

В случае адресации по базе исполнительный адрес формируется по схеме, приведенной на рис.7.5.а,

Пример:

Адресация по базе необходима для организации доступа к конкретным полям блока данных, адреса которого могут быть неизвестены во время написания программы. Например, размещение блока данных определяется только в момент загрузки. В такой ситуации переменный адрес начала блока (базу) удобно располагать в регистре brеg (базовом), а известный относительный адрес элемента (индекс) хранить непосредственно в команде.

Схема вычисления исполниетльного адреса при индексной адресации показана на рис.7.5.б и похожа на схему вычисления по базе:

Пример:

Однако методика ее использования иная.

Рис.7.5.

Индексная адресация применяется при последовательном доступе к элементам структурированных данных (массив, таблица, очередь и т.д.), начальный адрес размещения которых (база) известен. При этом номер элемента структуры (индекс) является переменной, вычисляемой во время исполнения программы, поэтому индекс удобно хранить в регистре ireg (индексном), а базу - в объектном коде команды.

Отличие индексной адресации от адресации по базе состоит в том, что в объектном коде должен храниться полный адрес памяти base=еа.

Разновидностью адресации по базе является относительная адресация (рис.7.5.в).

В этом случае в качестве базового регистра breg используется РС, указываемый неявно. Данный способ адресации используется, например, в командах безусловного перехода:

В командах хранится смещение относительно текущего значения РС.

Относительная адресация применяется для создания позиционно-независимых программ, т.е. программ, работа которых не зависит от их размещения в памяти.

Двухкомпонентная косвенная регистровая адресация может быть получена, когда обе компоненты, и база, и индекс заданы косвенно (базо-индексная адресация). Способ симметричен по отношению к своим компонентам только при одинаковой размерности регистров (базового и индексного).