Реферат: 80386 процессор
5. Система команд
5.1. Формат команд
Команды МП 80386 состоят из отдельных элементов и могут иметь различные форматы. Из всех описанных ниже элементов только один (код операции, Коп) обязательно присутствует в любой команде. Остальные элементы могут отсутствовать, что определяется характером операции, а также местоположением и типом операндов.
Команды состоят из следующих элементов: необязательных префиксов; одного или двух байтов кодов операции; возможно - описателя адреса, который включает байт Mod R/M и байт масштаба, индекса и базы; смещения - если требуется; поля непосредственных данных - если требуется.
Префиксы - один или несколько байтов, предшествующих команде и модифицирующих операцию этой команды. Имеется 4 типа префиксов.
1. Повторение - используется с командами обработки строк; заставляет команду воздействовать на каждый элемент строки.
2. Размер операнда - переключает разрядность операндов, устанавливая их 32-разрядными или 16-разрядными.
3. Размер адреса - переключает разрядность адреса, определяя образование 32-разрядных или 16-разрядных адресов.
4. Замена сегмента - в явной форме указывает, какой сегментный регистр должна использовать команда. Префикс отменяет действующий по умолчанию выбор сегментного регистра, обычно осуществляемый МП 80386 при выполнении этой команды.
Код операции (Коп) - описывает операцию, выполняемую командой. Некоторым командам присущи несколько кодов операций, каждый из которых описывает определенный вариант операции.
Описатель регистра - в команде могут быть описаны один или два регистра в качестве операндов. Описатель регистра может присутствовать как в байте кода операции, так и в байте описателя режима адресации.
Описатель режима адресации. Этот элемент, если он присутствует, описывает, является ли операнд содержимым регистра или ячейки памяти. Если операнд находится в памяти, описатель режима указывает, надо ли использовать смещение, индексный регистр, регистр базы и масштабирование.
Байты MOD R/M и SIB. Большинство команд, ссылающихся на операнд, находящийся в памяти, содержат после байта основного кода операции еще байт формы адресации. Этот байт описывает используемую форму адреса. Определенные значения кода поля MOD R/M указывают на наличие второго адресного байта SIB.
Байты MOD R/M и SIB содержат следующую информацию:
- тип индексации или номер регистра, используемого в команде;
- используемый регистр или дополнительную информацию о выборе команды;
- информацию о базе, индексе и масштабе;
Смещение. Если описатель режима адресации указывает, что при вычислении адреса операнда будет использовано смещение, в состав кода команды включается поле смещения. Смещение представляет собой 8-, 16- или 32-разрядное целое число со знаком. 8-разрядная форма используется в тех случаях, когда значение смещения невелико.
Непосредственный операнд (данное). Если этот элемент присутствует, он представляет значение операнда команды. Непосредственные операнды могут быть 8-, 16- или 32-разрядными. В случаях когда 8-разрядный непосредственный операнд используется в команде вместе с 16- или 32-разрядным операндом, процессор автоматически увеличивает размер 8-разрядного операнда путем расширения его знакового разряда.
5.2. Описание обозначения
+rb, +rw, +rd Код регистра (от 0 до 7), который складывается с указанным слева от знака плюс шестнадцетиричным числом (байтом) с лбразованием байта кода операции. Регистрам присвоены следующие коды :
rb rw rd
AL=0 AX=0 EAX=0
CL=1 CX=1 ECX=1
DL=2 DX=2 EDX=2
BL=3 BX=3 EBX=3
AH=4 SP=4 ESP=4
CH=5 BP=5 EBP=5
DH=6 SI=6 ESI=6
BH=7 DI=7 EDI=7
/цифра Цифра, стоящая справа от косой черты, имеет, вообще говоря, значение от 0 до 7. Она показывает, что в байте MOD R/M указывается только один операнд r/m (регистр/память). Сама цифра помещается в поле reg и образует расширение кода операции.