Индексная (автоинкрементная или автодекрементная) адресация

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

 

 

Рисунок 2.5.7- Формирование адреса операнда при индексной адресации

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

Часто в команду с индексной адресацией включают признак, определяющий шаг индексации Т (Т=1,2,4 и т.д.), что позволяет осуществлять адресацию массивов через байт, слово, двойное слово и т.д.

В современных процессорах (например, в Intel 80386 и выше) применяют все возможные сочетания из смещения, индексного адреса, относительного адреса и шага. Например:

- индексная адресация с шагом. Содержимое индексного регистра умножается на шаг и суммируется со смещением- EA=[X]×T+D,гдеТ- величина шага;

- базово - индексная адресация EA=[В]+[X];

- базово - индексная адресация с шагом EA=[В]+[X]×Т;

- базово - индексная адресация со смещением EA=[В]+[X]+D;

- базово - индексная адресация со смещением и шагом EA=[В]+[X]×Т+D.