Форматы команд микропроцессора INTEL.
Регистры общего назначения (РОНы) разбиты на две группы:
1. группа HL, состоящая из регистров AX, BX, CX, DX, которые предназначены для хранения данных и допускают раздельную адресацию их старших Н и младших L половин.
2. группа PI, содержащая указательные регистры BP, SP и индексные регистры SI, DI, в которых обычно храниться адресная информация.
РОНы
15 8 7 0 | |||
AH | AL | АХ - аккумулятор | |
CH | CL | СХ | |
DH | DL | DX | |
DH | BL | ВХ | |
SP | Адресный регистр | ||
BP | Адресный регистр | ||
SI | Адресный регистр | ||
DI | Адресный регистр |
Команды могут адресовать один или два операнда. В двухоперандных командах один из операндов должен обязательно располагаться в регистре, поскольку имеются команды типа регистр-регистр, регистр-память, память регистр, но команда типа память-память отсутствует, за исключением команд пересылки цепочки байт ил слов.
Формат двухоперандной (двуядерной) команды имеет следующий вид:
Cop dw | md reg r/m | Disp L | Disp H |
1 2 3 4
Первый байт команды содержит Cop – код операции и два однобитовых поля: d- бит направления передачи и w- длина операнда.
При d=1, то осуществляется передача операнда или результата операции в регистр, номер которого задается полем reg второго байта команды.
При d=0, то осуществляется передача операнда или результата из адресуемого полем reg регистра.
Поле W идентифицирует тип(разрядность) операндов:
Если w=1, то команда оперирует с 2-хбайтным словом.
w=0, команда оперирует с 1 байтом.
2-ой байт – постбайт, определяет участвующие в операции регистры или регистр и ячейку памяти. постбайт состоит из 3-х полей:
md – режим, показывающий как интерпретируется поле r/m для нахождения первого операнда.
Reg – регистр, используется в 2 –х операндных командах.
R/m – регистр/память
Поле reg определяет операнд, который обязательно находится в регистре микропроцессора и считается вторым операндом. Поле r/m определяет операнд, который может находится в регистре или памяти и условно считается первым. Поле reg используется только для указания регистра в двухоперандных командах. Если в команде один операнд, то он идентифицируется полем R/m, а поле reg отсутствует. Вместо поля reg в этом случае используется расширение кода операции.
Поле md(модальность) показывает, как интерпретируется поле R/m для нахождения первого операнда:
Если md=11, то операнд находится в регистре,номер которого задан полем R/m. При других значениях md операнд находится в памяти.
Когда адресуется память, то поле md определяет вариант использования смещения disp, находящегося в 3 и 4 байте.
Disp – смещение в команде, интерпретируемое как целое число со знаком.
md=00 смещение disp отсутствует.
md=01 disp =disp L, команда содержит 8 бит , смещение D8.
md=10 disp= dispH dispL, команда содержит 16 бит, смещение D16.
Режимы адресации (вычисление эффективного адреса ЕА)
Поле md | |||||
R/m | md=00 disp=0 | md=01 dispH=dispL=D8 | md=10 disp=dispH dispL | ||
W=1 | W=0 | ||||
BX+SI | BX+SI+D8 | BX+SI+D16 | AX | AL | |
BX+DI | BX+DI+D8 | BX+DI+D16 | CX | CL | |
BP+SI | BP+SI+D8 | BP+SI+D16 | DX | DL | |
BP+DI | BP+DI+D8 | BP+DI+D16 | BX | BL | |
SI | SI+D8 | SI+D16 | SP | AH | |
DI | DI+D8 | DI+D16 | BP | CH | |
DI6 | BP+D8 | BP+D16 | SI | DH | |
BX | BX+D8 | BX+D16 | DI | BH |
Приведенные в таблице правила имеют одно исключение, позволяющее реализовать прямую(абсолютную) адресацию: если md=D16=dispH dispL.
Таким образом, имеется три варианта интерпретации поля md и восемь вариантов интерпретации поля r/m , что дает 24 варианта вычисления эффективного адреса ЕА.
Команды микропроцессора реализуют разные способы адресации, что упрощает организацию и использование сложных структур данных и расширяет возможности отдельных команд, и повышает гибкость их применения.
- регистровая адресация. Операнд находится в одном из РОНов или сегментном регистре. Регистр может быть определен в байте кода операции или постбайте (3-битными полями) reg и r/m при условии md=11. Команды, оперирующие содержимым регистров, короткие и быстрые, так как не требуют вычисления эффективного адреса ЕА, и обращения к памяти.
- Непосредственная адресация. Непосредственные операнды – это const длиной 8 или 16 бит, которые размещаются в последних байтах команды.
Cop sw | md cop r/m | Disp L | Disp H | Data L | Data H |
Так как 2-ой операнд размещается в команде, то поле reg отсутствует, но вместо него используется расширение кода операции cop. Отсутствует бит направления d, так как результат операции можно поместить только на место первого операнда. Место этого бита d занимает бит S, который является признаком использования одного байта для задания непосредственного операнда при работе со словами.
Поля S и W интерпретируются следующим образом:
SW=Х0, один байт данных Data L
SW=01, один байт данных Data H Data L
SW=11, один байт данных, который автоматически расширяется со знаком до 16 бит.
- прямая адресация. Эффективным адресом ЕА является содержание байта в смещении disp команды. Реализуется при использовании постбайта с полями md=00 и r/m=10.
- Косвенно-регистровая адресация. Эффективный адрес ЕА равен содержимому одного из регистров SI, DI, BX при md=00 и r/m=100, 101, 111.
- Базовая адресация ЕА вычисляется суммированием содержимого регистров BX и BP со смещением disp при md=01 и 10, r/m=100 и 111.
- Индексная адресация ЕА вычисляется суммированием индексных регистров SI и DI и смещения disp при md=01 и 10 при r/m=100, 101.
- Базовая индексная адресация. ЕА равно сумме содержимого базовых регистров BX или BP, индексного регистра SI или DI и смещения disp. Реализуется при md не равного 11 и r/m=000, 001, 010, 011.
Дата добавления: 2015-08-14; просмотров: 1572;