Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Регистры микропроцессора и форматы команд

Регистры общего назначения (РОНы) разбиты на две группы:

1. группа HL, состоящая из регистров Ax, Bx, Cx, Dx, которые предназначены для хранения данных и допускают раздельную адресацию их старших Н и младших L половин.

2. группа PI, содержащая указательные регистры BP, SP и индексные регистры SI, DI, в которых обычно хранится адресная информация.

 

Команды могут адресовать один или два операнда. В двухоперандных командах один из операндов должен обязательно располагаться в регистре, поскольку имеются команды типа регистр-регистр, регистр-память, память-регистр, но команды типа память-память отсутствуют, за исключением команд пересылки цепочки байт или слов.

Формат двухоперандной (двухадресной) команды имеет следующий вид:

Первый байт команды содержит код операции COP и два однобитовых поля:

d – направление передачи, w – длина операнда.

При d=1 осуществляется передача операнда или результата операции в регистр, который определяется полем reg второго байта команды.

При d=0 осуществляется передача операнда или результата из адресуемого полем reg регистра.

Поле wидентифицирует тип (разрядность) операндов:

при w=1 команда оперирует словом, состоящим из двух байт;

приw=0 команда оперирует одним байтом.

Второй байт, называемый постбайтом, определяет участвующие в операции регистры (reg) или регистр и ячейку памяти (полеr/m).

полеmd – определяет режим;

полеreg– задает регистр;

поле r/m– указывает либо регистр (r) либо память(m). (m -отmemory)

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

Поле reg используется только для указания регистра в двухоперандных командах. Если в команде один операнд, то он идентифицируется полем r/m, а поле reg отсутствует. Вместо поля reg в этом случае используется расширение кода операции.

Поле md (модальность) показывает, как интерпетируется поле r/m для нахождения первого операнда:

еслиmd=11, то операнд находится в регистре, номер которого задан полем r/m, в остальных случаях операнд находится в памяти. Когда адресуется память, то полеmd определяет вариант использования внутрикомандного смещенияdisp, находящегося в третьем и четвертом байтах команды:

00, то disp=0 и смещение отсутствует;

md= 01, disp=disp L – команда содержит 8-битовое смещение D8;

10, disp=disp H disp L – команда содержит 16-битовое смещение D16.

При md ≠ 11 реализуется косвенная адресация, и поле r/m определяет правила формирования эффективного адреса ЕА операнда в соответствии с таблицей:

  Поле md Регистровая адресация
r/m md=0 disp=0 md=01 disp=disp L=D8 md=10 disp=dispH dispL=D16 md=11
w=0 w=1
Bx+SI Базово- индексная адресация Bx+SI+D8 Базово – индексная Bx+SI+D16 Базово – индексная AL Ax
Bx+DI Базово – индексная Bx+DI+D8 Bx+DI+D16 CL Cx
BP+SI Базово – индексная BP+SI+D8 BP+SI+D16 DL Dx
BP+DI BP+DI+D8 BP+DI+D16 BL Bx
SI индекс- ная SI+D8 индекс- ная SI+D16 индекс- ная AH SP
DI адреса- ция DI+D8 адреса- ция   DI+D16 адреса- ция   CH BP
D16 Абсо- лютная адре- сация BP+D8 Базо- вая адреса- ция BP+D16 Базовая адресация DH SI
Bx Базовая адресация Bx+D8 Bx+D16 BH DI

 

Приведенные в таблице правила имеют одно исключение, позволяющее реализовать прямую (абсолютную) адресацию: если md=00, a r/m=110, то EA=D16=disp H disp L.

Таким образом, имеется три варианта интерпретации поля mdи восемь вариантов интерпретации поляr/m, что дает 24 варианта вычисления эффективного адреса ЕА.

Смещение disp, содержащее в команде, интерпретируется как целое число со знаком, которое участвует в вычислении эффективного адреса ЕА.

Имеется специальный формат команды для непосредственной адресации, т.е. когда операнд располагается в самой команде.

Поскольку необходимость в адресации второго операнда отсутствует, то поле regиспользуется для расширения кода операцииCOP. Отсутствует также и бит направленияd, т.к. результат операции можно поместить только на место первого операнда. Место этого бита занимает бит S, который является признаком использования одного или двух байт для задания непосредственного операнда. Поле S и W интерпретируются следующим образом:

х0,один байт данных data L;

SW= 01,два байта данных data H data L;

11, один байт данных, который автоматически расширяется со знаком

до 16 бит.

 

 

Способы адресации

Команды микропроцессора реализуют весьма разнообразные способы адресации, что упрощает организацию и использование сложных структур данных, а также расширяет возможности отдельных команд и повышает гибкость их применения.

Регистровая адресация

Операнд находится в одном из РОНов или в одном из сегментных регистров. Регистр может быть определен в байте кода операции или в постбайте 3-ех битовыми полями reg и r/m при условии md=11. Команды, оперирующие содержимым регистров, являются наиболее короткими и быстрыми, т.к. не требуют вычисления эффективного адреса ЕА и обращения к памяти.

Прямая адресация

В этом случае эффективным адресом ЕА является содержимое байтов смещения disp команды. Этот способ реализуется при использовании постбайта с полями md=00 и r/m=110. ЕА – смещение в сегменте. Это целое число без знака.

Косвенная регистровая адресация

Эффективный адрес ЕА равен содержимому одного из регистров SI, DIиBxпри md=00и r/m=100, 101и 111.

Данный способ адресации позволяет вычислять адреса во время выполнения программ. При изменении содержимого регистра (SI, DI и Bx) одна и та же команда оперирует различными ячейками памяти, что позволяет организовать вычислительные циклы. Изменение РОНов обычно осуществляется с помощью команд инкрементирования (увеличения) и декрементирования.

Базовая адресация

ЕА вычисляется путем суммирования содержимого регистров Bxи BPи смещения disp при md=01 и 10, r/m=111 и 110.

При использовании Bx происходит обращение к операнду в текущем сегменте данных, а при BP – в текущем сегменте стека. Смещение disp может иметь длину 8 или 16 бит.

Индексная адресация

ЕА вычисляется путем суммирования содержимого индексных регистров SIиDIи смещения disp при md=01 и 10, r/m=100 и 101.

Базовая индексная адресация

ЕА равен сумме содержимого базового регистра BxилиBP, индексного регистра SIилиDIи смещения disp, находящегося в команде (в частном случае смещение disp может отсутствовать). Этот способ реализуется при md≠11 и r/m=000,001,010,011 и является наиболее гибким, т.к. две компоненты адреса (базу и индекс) можно изменять в процессе выполнения программ, что позволяет легко обращаться к элементам двумерных матриц.

Последнее изменение этой страницы: 2016-07-23

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...