logo
КС-ZAO / Лекции ЦЭВМруский вариант11

Новые режимы адресации

Процессор 80386 поддерживает все режимы адресации процессоров 8086, 80186 и 80286 и позволяет также использовать новые режимы адресации. В качестве базового регистра можно использовать любой из восьми 32-разрядных общих регистров, а в качестве индексного регистра - любой из 8 32-разрядных общих регистров, кроме регистра SP.

При вычислении адреса памяти индексный регистр можно умножать на 2, 4 или 8. Для этого после индексного регистра просто помещается *2, *4 или *8 (это средство называется индексным масштабированием). Например:

mov ebx,8

mov eax,[DwordTable+ebx*4]

Индексное масштабирование может быть чрезвычайно полезно при доступе к элементам, как к массивам слов, двойных слов или четверных слов.

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

Вопрос о том, какой из регистров является базовым, важен, так как по умолчанию базовый регистр управляет сегментом, на который делается ссылка при данном обращении к памяти. Доступ к памяти, осуществляемый с помощью использования регистров EBP и ESP в качестве базовых, приводит к ссылке на сегмент, на который указывает регистр SS, а доступ к памяти, при котором в качестве базовых используются регистры EAX, EBX, ECX, EDX, ESI или EDI приводит к ссылке на сегмент, на который указывает регистр DS.

Новые режимы адресации процессора 80386 работают только с 32 -разрядными регистрами адресации к памяти. 16-разрядные регистры можно использовать только для ограниченного доступа к памяти, также, как в процессоре 8086.