Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КС-ZAO / Лекции ЦЭВМруский вариант11.doc
Скачиваний:
188
Добавлен:
07.02.2016
Размер:
15.82 Mб
Скачать

Новые регистры

Впроцессоре 80386 общие регистры, регистр флагов и указатель инструкций процессора 8086 увеличены по размеру до 32 бит, кроме того добавлены два новых сегментных регистра.

32-разрядные общие регистры

32-разрядные регистры общего назначения называются EAX, EBX, ECX, EDX, ESI, EDI, EBP и ESP. Младшие 16 битов этих регистров образуют множество 16-разрядных регистров процессора 8086, которые нам уже хорошо знакомы. Например, младшие 16 битов регистра EAX представляют собой регистр AX. Аналогично, младшие 8 битов регистра EAX представляют собой регистр AL. В результате к различным частям регистра EAX можно теперь обращаться с помощью четырех различных имен: 32-битового регистра EAX, 16-битового регистра AX и 8-битовых регистров AH и AL. Тоже самое относится к регистрам EBX, ECX и EDX.

При обращении к 32-разрядным регистрам есть имеется только один небольшой недостаток: невозможно непосредственно использовать старшие 16 битов 32-разрядного регистра, как 16-разрядный регистр. Если вы хотите использовать старшие 8 битов регистра AX, то можно просто сослаться на регистр AH, а если вы хотите использовать младшие 16 битов регистра ESI, как регистр, то можно просто ссылаться на SI. Однако нет эквивалентного способа ссылаться, скажем, на старшие 16 битов, например, регистра EAX.

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

32-разрядный регистр флагов

Младшее слово регистра флагов процессора 80386 идентично регистру флагов процессора 8086. Старшие 16 битов регистра флагов процессора 8086 содержит два новых флага. Один из этих новых флагов показывает, работает ли в данный момент процессор 80386 как виртуальный процессор 8086, а другой флаг предназначен для использования при разработке средств отладки. Прикладным программным обеспечением эти флаги обычно не используются.

32-разрядный указатель инструкций

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

Новые сегментные регистры

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

Регистры FS и GS используются также, как в несторовых инструкциях используется регистр ES: с помощью префикса переопределения сегмента.

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

Процессор 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.

Соседние файлы в папке КС-ZAO