Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Форматы команд 16-разрядного МП




Команда может содержать от одного до шести байтов (рис.2.4)

 
 


КОП

       
   


КОП 11 reg r/m

КОП mod коп r/m

КОП mod reg r/m МБ disp СБ disp

КОП 11 коп r/m МБ data СБ data

КОП mod коп r/m МБ disp СБ disp МБ data СБ data

Формат первого байта команды показан на рис. 2.5.

 

7 2 1 0

коп d w

или 7 2 1 0

коп reg

 

или 7 4 3 2 0

 

коп w reg

 

 

Рис. 2.5. Формат первого байта команды

 

Поле d (directin) определяет направление передачи операнда. Если d=1, то направление передачи в регистр, если d=0, то из регистра.

Поле W (word) определяет тип операнда. Если W=1, то операнд - 16-разрядное слово, если W=0 - байт. Двухразрядное поле reg служит для размещения адреса сегментного регистра (табл. 2.2), а трехразрядное поле - для размещения адреса регистров общего назначения (табл. 2.3). В остальных разрядах первого байта команды размещается код операции (КОП).

Таблица 2.2 Таблица 2.3

Адреса сегментных регистров Адреса регистров общего назначения

Имя Адрес Имя регистра Адрес (rrr)

регистра (r r) при W=1 при W=0

       
   
 


ES 00 АХ AL 000

CS 01 CX CL 001

SS 10 DX DL 010

DS 11 BX BL 011

SP AH 100

BR CH 101

DI DH 110

SI BH 111

 

Во втором байте команды указан способ адресации. В зависимости от способа адресации за вторым байтом команды могут следовать один или два байта непосредственных данных и необязательно (это зависит от конкретного кода команды) за ними один или два байта смещения (disp);

Формат второго байта команды:

7 6 5 3 2 0

mod reg r/m

 

Поле reg указывает адрес регистра (см. табл. 2.3). В командах непосредственной загрузки сегментных регистров в поле reg записывается трехразрядный код 0rr, где два разряда rr определяются из табл. 2.2.

Поле mod определяет используемый способ адресации. Следует помнить, что при выполнении команд один операнд всегда хранится в одном из регистров, а другой выбирается из памяти либо из регистра. Когда в поле mod содержится код 11, то операнд выбирается из регистра, адрес которого определяется из табл. 2.3. Если mod ¹ 11, то это поле определяет, каким образом используется смещение disp (табл. 2.4).

Поле r/m определяет, как формируется смещение ЕА (табл. 2.4).

Таблица 2.4

mod = 00 disp r/m отсутствует mod = 01 disp 8 разрядов mod = 10 disp 16 разрядов
000 (BX) + (SI) (BX) + (SI) + disp (BX) + (SI) + disp
001 (BX) + (DI) (BX) + (DI) + disp (BX) + (DI) + disp
010 (BP) + (SI) (BP) + (SI) + disp (BP) + (SI) + disp
011 (BP) + (DI) (BP) + (DI) + disp (BP) + (DI) + disp
100 (SI) (SI) + disp (SI) + disp
101 (DI) (DI) + disp (DI) + disp
110 прямая адресация (BP) + disp (BP) + disp
111 (BX) (BX) + disp (BX) + disp

Примечание: для случая r/m=110 и mod=00 используется прямая адресация, для которой ЕА определяется смещением disp.

 

Для одной и той же команды время вычисления исполнительного адреса зависит от способа формирования смещения ЕА, и, следовательно, время выполнения команды будет различным. В табл. П2.1 время выполнения команд выражается числом тактов, необходимых для выполнения команды без учета времени вычисления исполнительного адреса, плюс переменная ЕА, обозначающая число тактов, необходимых для вычисления исполнительного адреса. Количество тактов, требуемое для вычисления ЕА, указано в табл. 2.5. При замене сегментного регистра, который обычно указан по умолчанию, число тактов следует увеличить на два.

Таблица 2.5

Cпособ формирования ЕА (табл. 2.4) Число тактов
Прямая адресация r/m = 110 r/m = (100,101,111) mod = 00 r/m = (100,101,110,111) mod = 01 r/m = (000,011) mod = 00 r/m = (001,010) mod = 00 r/m = (000,011) mod = 01 r/m = (000,011) mod = 10 r/m = (001,010) mod = 01 r/m = (001,010) mod = 10  

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...