Косвенная адресация

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

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

Для того, чтобы отличить косвенную адресацию от регистровой мнемоническое обозначение регистра заключается в квадратные скобки (например, использование записи ВХ обозначает использование соответствующего регистра в качестве операнда; запись [ВХ] – использование содержимого регистра в качестве смещения при вычислении адреса операнда).

При косвенной адресации использование того или иного регистра данных или индексного регистра неявно определяет соответствующий сегмент, однако сегментный регистр можно явно переопределить. В качестве регистра косвенной адресации для микропроцессора i8086 (и, естественно, всех остальных микропроцессоров этого семейства) можно использовать только регистры [ВХ], [SI], [DI], [ВР]. Для первых трех регистров их содержимое является смещением по отношению к сегменту данных (т.е. текущее значение сегментного регистра DS определяет вторую составляющую адреса). Для [ВР] используется сегмент стека (текущее содержимое сегментного регистра SS) при вычислении адреса.