Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 15. Способы адресации операндов.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
128.51 Кб
Скачать

15.8. Индексная адресация

Индексная адресация предоставляет удобный механизм для организации итеративных вычислений. Пусть, например, имеется массив чисел, расположенных в оперативной памяти последовательно, начиная с адреса N, и необходимо увеличить на единицу все элементы данного массива. Для этого требуется извлечь каждое число из оперативной памяти, прибавить к нему 1 и вернуть обратно, а последовательность адресов будет следующей: N, N+ 1, N+ 2 и т. д., вплоть до последней ячейки, занимаемой рассматриваемым массивом. Начальный адрес массива заносится в регистр общего назначения, а в поле «смещение» - шаг по массиву. Возможен вариант, когда и начальный адрес массива, и шаг по массиву заносятся в два регистра общего назначения, а поле «смещение» не используется. После очередного цикла содержимое регистра общего назначения с адресом массива увеличивается на величину шага (смещения или содержимого другого регистра общего назначения).

Так как это довольно типичный случай, во многих архитектурах компьютеров увеличение или уменьшение содержимого регистра с адресом массива до или после обращения к нему осуществляется автоматически, как часть машинного цикла. Такой прием называ­ется автоиндексированием. Если для индексной адресации используются специ­ально выделенные регистры, автоиндексирование может производиться неявно и автоматически. При использовании для хранения адресов массивов регистров общего назначения необходимость операции автоиндексирования должна указываться в команде специальным разрядом.

Автоиндексирование с увеличением содержимого регистра носит на­звание автоинкрементной адресации.

Если увеличение содержимого регистра происходит после формирования адреса, этот способ называется постинкрементным автоиндексированием.

Если сначала производится увели­чение содержимого регистра, и уже новое значение используется для формирования адреса, то говорят о преинкрементном автоиндексировании.

Автоиндексирование с уменьшением содержимого индексного регистра носит название автодекрементной адресации.

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

15.9. Относительная адресация

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

Для команд перехода чрезвычайно важно, насколько далеко адрес перехода от­стоит от адреса команды перехода, иными словами, какова типичная величина смещения. Часто длина смещения не превышает 8 разрядов, что соответствует смещению в пределах ±128 относительно команды ветвления.

При относительной адресации для получения исполнительного адреса опе­ранда содержимое поля «смещение» команды складывается с содержимым регистра номера команды (рис. 15.7).

Рис. 15.7. Относительная адресация

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

Адресация относительно регистра номера команды базируется на свойстве локальности, выражающемся в том, что большая часть обращений происходит к ячейкам, расположенным в непосредственной близости от выполняемой команды. Это по­зволяет сэкономить на длине адресной части команды, поскольку разрядность ­поля «смещение» может быть небольшой. Главное достоинство данного способа адресации состоит в том, что он делает программу перемещаемой в оперативной памяти. Независимо от текущего расположения программы в адресном пространстве взаимное положе­ние команды и операнда остается неизменным, поэтому адресация операнда оста­ется корректной.

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