Форматы машинных команд

Система команд микропроцессора – это набор команд, которые умеет выполнять процессор. Для базового 16-битового процессора составляет 120 штук.

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

Правила кодирования определяются форматами машинных команд.

Форматы машинных команд определяют правила их кодирования.

В общем виде структуру машинной команды можно представить в виде:

Операционная часть Адресная часть

Операционная – старшая часть, адресная – младшая часть.

Длина команды – это очень важное обстоятельство, которое влияет на все характеристики вычислительной машины и на размеры памяти и на ширину шин и на другие параметры.

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

Размер машинной команды кратен байту.

Ширина шины тоже кратна байту: 16 бит, 32 бита, 64 бита.

Обобщенный формат машинной команды

КОП СА Адресная часть

КОП – код операции

СА – способ адресации

Количество адресов в команде.

Адресность.

Если рассуждать логически, то любая команда должна нести для процессора следующую информацию:

1. Какую операцию он должен выполнить (КОП)

2. С какими объектами будет выполняться операция. Т.е. должна быть информация об операнда: информация об исходных данных и об адресе результата.

3. Как выполнить операцию (СА).

Четырехадресный формат машинной команды

КОП 1-й операнд 2-й операнд Результат Адрес следующей команды

 

Такой формат использовался в вычислительных машинах первого поколения и сейчас практически не применяются.

В Фон Неймановской машине необходимость указания следующего адреса отпадает, поскольку команды располагаются в памяти в порядке их выполнения. Поэтому адрес следующей команды может быть получен за счет простого увеличения адреса в счетчике команд.

Трехадресный формат машинной команды

КОП 1-й операнд 2-й операнд Результат

 

Двухадресный формат команд

КОП 1-й операнд 2-й операнд результат

 

Недостаток: второй операнд затирается.

Одноадресный формат машинной команды

КОП 1-й или 2-й операнд

 

Пример таких команд: умножение, деление.

В этом случае для хранения второго операнда использующегося в команде используется, например, регистр-аккумулятор (АХ).

Резисторный (Полутороадресный) формат машинной команды

КОП Регистр 2-й операнд результат

 

Нульадресный формат машинной команды

КОП

 

Команда ret (return)

Чем длиннее команда, тем медленнее будет работать команда.

 

Обобщенный формат двухоперандной команды

7 1 0 7 6 5 4 3 2 1 0 7 0 7 0

 

Длина 4 байта.

Старший байт называется (слева) называется байт кода операции. Он состоит из трех полей 6-битового поля кода операции. Поле d – поле направления передач (однобитовое).

Поле w – однобитовое.

Поле d определяет направление передачи, а поле w определяет передача байта или слова осуществляется (размер операнда, участвующего в операции).

D W Передача или операция
Байт из регистра reg в память или регистр r/m
Слово из регистра reg в память или регистр r/m
Байт в регистр reg из памяти или регистра r/m
Слово в регистр reg из памяти или регистра r/m

 

Второй байт команды называется пост байтом. Состоит из 3-х полей.

Он определяет участвующие в команде регистры или ячейку памяти.

Поле reg – Это трех разрядный, содержимое которого является вторым операндом

Поле r/m – (reg/mem) – трёхразрядное поле, которое определяет операнд, которое может находиться либо в регистре либо в ячейке памяти и считается первым.

Reg, r/m W=0 W=1
AL AX
CL CX
DL DX
BL BX
AH SP
CH BP
DH SI
BH DI

 

Поле mod (режим) – это двухразрядное поле, которое определяет используемый режим адресации. Оно показывает как интерпретируется поле r/m для нахождения первого операнда. Если mod =11, то операнд содержится в регистре. В остальных случаях адресуется память и поле под определяет, как используется необязательное смещение, которое находится в 3-ем и 4-ом байтах команды.

Mod = 11 регистровая адресация в соответствии с таблицей

Mod = 00 disp = 0 – смещение отсутствует

Mod 01 disp =disp L – используется 8-ми битовое смещение, которое расширяется со знаком до 16 бит.

Mod 10 disp = disp H – используется 16-битовое смещение.

Когда mod не равно 11, поле r/m показывает каким образом формируется эффективный адрес операнда

r/m Эффективный адрес Способ адресации
EA=[BX]+[SI]+DISP Базовая адресация
EA=[BX]+[DI]+DISP Базовая адресация
EA=[BP]+[SI]+DISP Базовая адресация
EA=[BP]+[DI]+DISP Базовая адресация
EA=[SI]+DISP Косвенная адресация
EA=[DI]+DISP Косвенная адресация
EA=[BP]+DISP Косвенная адресация
EA=[BX]+DISP Косвенная адресация

 

Разновидность двухоперандной команды с непосредственным операндом

Например

ADD CX, 0FFFFh

Второй операнд в таких командах адресовать не нужно, а результат может быть помещен на место первого операнда. Поэтому назначение полей s и w в байте кода операции изменено.

Биты s и w определяют размер непосредственного операнда (т.е. байт или слово), а поле reg используется для расширения поля кода операции.

Sw Размер операнда
X0 Один байт данных Data L
Два байта (word) data H data L
Один байт данных, который расширяется со знаком до 16-бит.

 

Пример в тетради.