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

 

При индексной адресации (ИА) подполе Ас содержит адрес ячейки памяти, а ре­гистр (указанный явно или неявно) — смещение относительно этого адреса. Как видно, этот способ адресации похож на базовую регистровую адресацию. Поскольку при индексной адресации в поле Ас находится полноразрядный адрес ячейки па­мяти, играющий роль базы, длина этого поля больше, чем при базовой регистро­вой адресации. Тем не менее вычисление исполнительного адреса операнда про­изводится идентично (рис. 30, рис. 31).

 

 

Рис. 30. Индексная адресация с индексным регистром.

 

 

Рис. 31. Индексная адресация с использованием одного из РОН.

 

Индексная адресация предоставляет удобный механизм для организации ите­ративных вычислений. Пусть, например, имеется массив чисел, расположенных в памяти последовательно, начиная с адреса N, и мы хотим увеличить на единицу все элементы данного массива. Для этого требуется извлечь каждое число из па­мяти, прибавить к нему 1 и вернуть обратно, а последовательность исполнитель­ных адресов будет следующей: N,N+1,N+2 и т.д., вплоть до последней ячейки, занимаемой рассматриваемым массивом. Значение N берется из подполя Ас ко­манды, а в выбранный регистр, называемый индексным регистром, сначала зано­сится 0. После каждой операции содержимое индексного регистра увеличивается на 1.

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

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

Интересным и весьма полезным является еще один вариант индексной адреса­ции — индексная адресация с масштабированием и смещением: содержимое индекс­ного регистра умножается на масштабный коэффициент и суммируется с Лс. Мас­штабный коэффициент может принимать значения 1,2,4 или 8, для чего в адресной части команды выделяется дополнительное поле. Описанный способ адресации реализован, например, в микропроцессорах фирмы Intel.

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