Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Структура команды



Команда в защищенном режиме (рис. 3.17) может содержать от 1 до 17 байт:

0, 1,2,3,4 или 5 байта 1 байт 0 или1 байт 0 или1 байт 0,1,2 или 4 байта 0,1,2 или 4 байта
префикс код операции постбайт SIB - байт байты смещения байты операнда
Рис.3.17. Структура команд МП IA -32.

1. Префиксы (0,1,2,3 или 4 байт):

· префикс блокировки шины реализует блокировку шин к общим ресурсам.

· префикс замены сегмента в явной форме указывает сегментный регистр, используемый программой,

· префикс переключения разрядности адреса изменяет принятую по умолчанию разрядность адреса на альтернативную (с 2-х байт на 4 или наоборот),

· префикс размера операнда изменяет разрядность операнда, принятую по умолчанию.

· префикс повторения используется с командами обработки строк, задает условие окончания операции.

2. Код операции (1или 2 байта) – задает операцию.

3. Постбайт (0 или 1 байт) – если присутствует, задает тип команды (регистр/регистр или регистр/память), а также определяет режим адресации памяти для команды типа регистр/память.

4. Байт SIB (scale-index-base – масштаб-индекс-база) – может отсутствовать; если присутствует – является дополнением к постбайту, модифицирующим процедуру базово-индексной адресации; присутствие байта SIB определяется полем постбайта r/m = 100.

5. Смещение – компонента адреса; задает смещение, размер которого (1, 2. или 4 байта). Смещение может отсутствовать, его присутствие определяется постбайтом.

6. Непосредственный операнд – определяется кодом операции, если присутствует, то используется в качестве одно, двух или четырехбайтного операнда.

Режим адресацииоперандов

Режим адресацииоперандов в команде определяется кодом операции, постбайтом и байтом SIB. Режим адресации определяет местонахождение компонентов операндов и алгоритм вычисления адреса операнда в памяти.

В защищенном режиме МП IA –32 используются следующие виды адресаций:

· непосредственная (константа) MOV еax, 0002h,

· прямая (#d – смещение) MOV еbx, [0002h],

· регистровая (любой РОН, кроме ebp) MOV еbx, еах,

· косвенная регистровая MOV еах, [еbx],

· базовая со смещением MOV еах, [еbx+001Ah],

· базовая индексная без смещения MOV еах, [еbp+esi*8],

· базовая индексная со смещением MOV еах, [еbp+esi*8+1Ah],

Предусмотрены два способа задания смещения операнда в таблицах.

1. Для обращения к элементам таблицы (спискам) последовательно по смежным адресам; устанавливается значением поля r/m ¹ 100впостбайте,

2. Для обращения к элементам таблицы в произвольном порядке их адресов; устанавливается значением поля r/m = 100впостбайте при разрядности по адресу в 32 бита.

Постбайт

Это необязательный элемент команды. Задает один (для одноадресной команды) или два адреса операндов, один из которых используется и как адрес результата.

               
  md r/r r/m  
Рис. 3.18. Структура постбайта

Постбайт (рис. 3.18), как и в МП IA-16, содержит 3 поля:

· md – поле режима адресации,

· r/r – поле адреса регистра,

· r/m – поле адреса второго регистра или кода алгоритма вычисления адреса памяти.

Поле md

Это поле режима адресации, задающее тип команды: регистр/регистр(r/r)илирегистр/память(r/m).

Для команд регистр/память задает процедуру вычисления адреса операнда в памяти:

· md =00 – режим адресации r/m без использования смещения,

· md =01 – режим адресации r/m с использованием смещения 1 байт,

· md =10 – режим адресации r/m с использованием смещения 2 или 4 байта в зависимости от установки разрядности данных для конкретной программы. Предусмотрена возможность изменения разрядности данных для отдельных команд с использованием префикса.

· md =11 – режим адресации r/r.

Задание md= 11 определяет команду типа регистр/регистр. В этом случае поле r содержит номер РОНа, в котором находится один из операндов, а поле r/m, – номер РОНа, в котором находится второй операнд.

В 32-разрядном режиме адресации правила вычисления адресов операндов в сегменте (offset) определяются полем r/m постбайта. Значения поля r/m, кроме значения r/m = 100, задают формулы вычисления адреса второго операнда по двум компонентам: базы (B) и смещению (disp). Смещение, в зависимости от значения поля md постбайта и установки разрядности данных, может быть нулевым, однобайтным, двухбайтным или четырехбайтным.

Значение поля r/m= 100 задает новый способ задания адресов, упрощающий процедуру вычисления при обращении к таблицам по произвольным адресам. Этот способ использует дополнительный байт SIB.

Имеется исключение: при значении полей постбайта r/m= 101и md = 00 адрес операнда задается прямым адресом (4 байта) в поле смещения (см. табл. 2)





Дата публикования: 2014-11-03; Прочитано: 481 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...