Формат команд

Формат команд. Команды МП 80386 состоят из отдельных элементов и могут иметь различные форматы.

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

Префиксы - один или несколько байтов, предшествующих ко- манде и модифицирующих операцию этой команды. Имеется 4 типа - 8 - префиксов. 1. Повторение - используется с командами обработки строк заставляет команду воздействовать на каждый элемент строки. 2. Размер операнда - переключает разрядность операндов, устанавливая их 32-разрядными или 16-разрядными. 3. Размер адреса - переключает разрядность адреса, опре- деляя образование 32-разрядных или 16-разрядных адресов. 4. Замена сегмента - в явной форме указывает, какой сег- ментный регистр должна использовать команда.

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

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

Этот байт описывает используемую форму адреса. Определенные значения кода поля MOD RM указывают на наличие второго адресного байта SIB. Байты MOD RM и SIB содержат следующую информацию - тип индексации или номер регистра, используемого в ко- манде - используемый регистр или дополнительную информацию о выборе команды - информацию о базе, индексе и масштабе Смещение.

Если описатель режима адресации указывает, что при вычислении адреса операнда будет использовано смещение, в состав кода команды включается поле смещения. Смещение представляет собой 8 16- или 32-разрядное целое число со знаком. 8-разрядная форма используется в тех случаях, когда значение смещения невелико. Непосредственный операнд данное. Если этот элемент присутствует, он представляет значение операнда команды. Не 9 - посредственные операнды могут быть 8 16- или 32-разрядными.

В случаях когда 8-разрядный непосредственный операнд использу- ется в команде вместе с 16- или 32-разрядным операндом, про- цессор автоматически увеличивает размер 8-разрядного операнда путем расширения его знакового разряда. 5.2.