Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 46

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 40 41 42 43 44 45 < 46 > 47 48 49 50 51 52 .. 528 >> Следующая

Если операция выполняется над 16- или 32-разрядными словами (в ОРС
команды бит w = 1 или отсутствует), то возможны следующие варианты. При s
= 0 непосредственные данные содержат два или четыре байта, и в качестве
одного из операндов используются im16 или im32. При s = 1
непосредственные данные содержат один младший байт 16- или 32-разрядного
операнда, остальные разряды которого принимают значение старшего
(знакового) разряда младшего байта (расширением знаком).
СТРУКТУРА И ФУНКЦИОНИРОВАНИЯ ПРОЦЕССОРОВ INTEL Р6
Таблица 2.6
Кодировка регистров общего назначения
Поле REG Разрядность операндов
8 16 32
ООО AL АХ ЕАХ
001 CL СХ ЕСХ
010 DL DX EDX
011 BL ВХ ЕВХ
100 АН SP ESP
101 СИ ВР EBP
110 DH SI ESI
111 ВН DI EDI
Таблица 2.7 Кодировка сегментных регистров
Поле sreg Сегментный регистр
000 (00) ES
001 (01) CS
010 (10) SS
011 (11) DS
100 FS
101 GS
При обращении к памяти байты MODR/M и SIB определяют адрес младшего байта
операнда. Если операция выполняется с 16- или 32-разрядными операндами,
то старшие байты выбираются из ячеек памяти, значение адреса которых на 1
или 3 больше определяемых байтами адресации.
Процессоры Р6, как и предыдущие модели семейства 80x86, реализуют
сегментную организацию памяти, при которой физический адрес ячейки памяти
формируется путем ело. жения базового адреса сегмента и относительного
адреса ячейки внутри сегмента. Базовый адрес определяется содержимым 16-
разрядного сегментного регистра и зависит от режима работы
микропроцессора. Если микропроцессор работает в режиме обработки 16-
разрядных данных (режим реальных адресов или режим виртуального 8086), то
20-разрядный базовый адрес формируется путем сдвига содержимого
сегментного регистра на четыре разряда влево. Если микропроцессор
работает в режиме обработки 32-разрядных данных (защищенный режим), то
32-разрядный базовый адрес содержится в дескрипторе, выбор которого из
таблицы дескрипторов осуществляется с помощью селектора - содержимого
соответствующего сегментного регистра.
В зависимости от типа обращения к памяти производится выбор сегментного
регистра и способа определения относительного адреса (табл. 2.8). Для
некоторых способов обращения возможны варианты выбора сегментных
регистров, которые указаны в табл. 2.8 в скобках. Эти варианты могут быть
выбраны с помощью префикса замены сегмента SEG. В качестве отно-
сительного адреса используется содержимое регистров EIP (IP), ESP (SP),
ESI (SI), EDI (Dl) или эффективный адрес EA, который формируется в
соответствии с заданным способом адресации.
Эффективный адрес операнда ЕА является 16- или 32-разрядным и формируется
в зависимости от значения полей MOD и R/M в байте адресации MODR/M и
содержимого байта SIB (для 32-разрядных адресов). В общем случае ЕА
образуется путем арифме-тического сложе-ния трех компонент:
1) содержимого базового регистра EBP (ВР) или ЕВХ (ВХ);
2) содержимого индексного регистра ESI (SI) или EDI (Dl);
3) 8-, 16- или 32-разрядного смещения 68, d16 или d32, заданного в одном,
двух или четырех байтах поля DISP команды (см. рис. 2.11).
7 6 5 4 3 2 1 0
MOD REG/OPC R/M
SS INDEX BASE
Рис. 2.12. Форматы байтов MODR/M и SIB
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Таблица 2.8
Выбор сегментных регистров и относительного адреса
Тип обращения к памяти Сегментный регистр Относительный адрес*
1. Выборка команды CS EIP (IP)
2. Обращение к стеку SS ESP (SP)
3. Адресация операнда DS (CS,SS,ES,FS,GS) ЕА
4. Адресация элемента строки-источника DS (CS,SS,ES,FS,GS) ESI (SI)
5. Адресация элемента строки-приемника ES EDI (Dl)
6. Адресация операнда с использованием в качестве базового регистра EBP
(ВР) или ESP (SP) * В скобках указаны регистры, содержащие о операндов
SS (CS,DS,ES,FS,GS) тносительный адрес при о EA бработке 16-
разрядных
В зависимости от значения полей MOD и R/M для формирования ЕА
используются все или часть этих слагаемых в соответствии с табл. 2.9,
2.10. В этих таблицах указаны также сегментные регистры (DS: и SS:),
используемые для определения базовых адресов сегмента.
Если при формировании 32-разрядного адреса значение поля R/M = 100, то
команда содержит дополнительный байт адресации SIB. В таком случае
правила образования ЕА определяются табл. 2.11, где (IR'F) -
масштабированный индекс; IR - содержимое индексного регистра,
который.задается кодом INDEX; F - масштабный коэффициент, значение
которого определяется кодом SS (табл. 2.12). В качестве индексного может
использоваться любой из регистров общего назначения, кроме указателя
стека Е5Р(табл. 2.13).
Разрядность обрабатываемых операндов и адресов определяется режимом
работы процессора. Если программы выполняются в реальном режиме или
режиме виртуального 8086, то по умолчанию используются 16-разрядные
относительные адреса и операнды. При работе в защищенном режиме
дескриптор сегмента исполняемой команды содержит бит D, который
определяет принимаемую по умолчанию разрядность адресов и операндов: 16
Предыдущая << 1 .. 40 41 42 43 44 45 < 46 > 47 48 49 50 51 52 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed