Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВТ_2 часть.doc
Скачиваний:
6
Добавлен:
16.09.2019
Размер:
439.81 Кб
Скачать

8.3. Способы адресации, основанные на преобразовании кода команды.

Способы, в которых исполнительный адрес определяется адресным кодом команды и содержимым регистров МП, включают относительную и индексную адресации.

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

Базовые адреса хранятся в отведённых для этой цели регистрах, а в команде выделяется поле для указания номеров этих регистров.

Относительная адресация позволяет при меньшей длине адресного кода команды обеспечить доступ к любой ячейке памяти.

Д

Базовый адрес

Смещение D

ля этого число разрядов в базовом адресе выбирают таким, чтобы можно было адресовать любую ячейку оперативной памяти, а адресный код самой команды используют для представления лишь сравнительно короткого "смещения" (обозначают буквой D):

Смещение D определяет положение операнда относительно начала массива данных, задаваемого базовым адресом.

Поскольку суммирование связано с потерей времени, то для формирования исполнительного адреса используют так- же метод совмещения.

В этом случае базовый адрес содержит старшие, а смеще-ние – младшие разряды исполнительного адреса, которые объединяются в регистре адреса.

Однако при совмещении базовый адрес может задавать не любую ячейку, а только те, адреса которых содержат нули в младших разрядах, соответству-ющих смещению.

Относительная адресация обеспечивает так называемую перемещаемость программ, т.е. возможность передвижения программ в памяти без изменений внутри самой программы.

Развитием метода базирования является индексация.

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

В данном случае модификация заключается в изменении адресных частей соответствующих команд согласно расположению в оперативной памяти обрабатываемых операндов.

Для выполнения индексации используются так называемые индексные регистры, а в формате команды выделяется поле для указания номера индексного регистра.

Наименование индексных регистров связано с тем, что первоначально они предназначались для хранения индекса текущего элемента массива ai. Хотя назначение индексных регистров значительно расширилось, термин сохранился.

Исполнительный адрес формируется путём сложения адресного кода команды (смещения) с содержимым индексного регистра (индексом), а при наличии базирования – и с базовым адресом.

Отличительной чертой индексации является то, что код команды, хранящейся в оперативной памяти, остаётся неизменным. Следовательно, одна и та же команда может использоваться при соответствующих изменениях индекса для формирования различных исполнительных адресов.

Для управления индексацией используются команды, задающие операции над содержимым индексных регистров.

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

Изменение индекса состоит в сложении или вычитании значения индекса с фиксированным приращением.

Соответствующая команда указывает номер индексного регистра, а также значение и знак (или адрес) приращения.

Для проверки выхода из цикла используются или обычная команда условного перехода, или специальные команды "условный переход по счётчику" и "условный переход по индексу".

Счётчиком обычно служит один из регистров общего назначения, в который перед началом цикла загружается число повторений цикла.

Команда "условный переход по счётчику" может иметь, например, следующий вид:

Э

УПСч

R1

X2

B2

D2

УПИ

R1

R3

B2

D2

та команда уменьшает на 1содержимое счётчика (здесь регистра с номером R1), и если оно после этого не равно 0, то управление передаётся по адресу, определяемому суммой содержимого регистров Х2 и В2 с содержимым поля D2. В противном случае выход из цикла.

Команда "условный переход по индексу" имеет, например, вид:

Здесь R1 – номер индексного регистра; R3 – номер регистра, хранящего приращение; сумма содержимого регистра В2 с содержимым поля D2 определяет адрес начала цикла; в регистре с номером R3+1 хранится предельное значение индекса.

Команда производит суммирование содержимого регистров R1 и R3. Если новое значение индекса меньше или равно предельному, то это новое значение помещается в регистр R1 и происходит переход к началу цикла (повторение цикла). В противном случае выход из цикла.

Аналогично выполняется проверка окончания цикла в случае обратного условия.