Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 4 МП ЭВС.doc
Скачиваний:
35
Добавлен:
06.12.2018
Размер:
683.01 Кб
Скачать
  1. Формат команды микропроцессора

Команды микропроцессора INTEL 8086 занимают в памяти от 1 до 6 байт. Исполнительный адрес памяти представляет собой 16-разрядное беззнаковое целое, являющееся смещением относительно базы некоторого сегмента. Полный (физический) адрес формируется с использованием содержимого одного из сегментных регистров.

Режимы адресации подразделяются на

  1. прямые,

  2. косвенные.

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

Микропроцессор INTEL 8086 имеет организацию типа «регистр-память». С точки зрения адресации это означает, что команды микропроцессора адресуют максимум два операнда и что не допускается одновременная адресация двух ячеек памяти. Первым операндом в двухоперандной команде обычно является содержимое регистра или ячейки памяти, а вторым – содержимое регистра или непосредственный операнд в команде.

Формат команды:

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

младший байт смещения/ данные

старший байт смещения/ данные

младший байт данных

старший байт данных

КОП

D

W

MOD

REG

R/M

1-ый байт 2-ой байт

(постбайт)

Рисунок 1 – Формат команды микропроцессора INTEL 8086

КОП – определяет тип выполняемой операции.

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

W – определяет разрядность операндов: W=1 – команда обрабатывает 16-разрядные числа, W=0 – команда обрабатывает 8-разрядные числа.

Второй байт команды называется постбайтом. Постбайт определяет участвующие в операции регистры или регистр и ячейку памяти.

7

6

5

4

3

2

1

0

MOD

REG

R/M

MOD - режим

REG - регистр

R/M – регистр/ память

Поле REG определяет операнд, который обязательно находится в регистре и условно считается вторым операндом.

Поле R/M определяет операнд, который может находиться в регистре или памяти и условно считается первым операндом.

Поле REG используется для указания регистра только в двухоперандных командах. Если в команде один операнд, то он определяется полем R/M.

Способ кодирования внутренних регистров микропроцессора в полях REG и R/M представлен в таблице 1.

Таблица 1 - Способ кодирования внутренних регистров микропроцессора

Поле R/M или REG

W=0

W=1

Поле R/M или REG

W=0

W=1

000

AL

AX

100

AH

SP

001

CL

CX

101

CH

BP

010

DL

DX

110

DH

SI

011

BL

BX

111

BH

DI

Поле MOD определяет используемый режим адресации: регистровый режим/ режим памяти. Разряды поля MOD определяют вид информации в поле R/M для нахождения адреса первого операнда.

11 – операнд содержится в регистре

00, 01, 10 – операнд находится в памяти

MOD=

Когда MOD = 11, то поле R/M определяет 8- или 16-разрядный регистр в соответствии с таблицей кодирования 1.

Если разрядами MOD определено, что второй операнд расположен в памяти, то разряды R/M определяют способ формирования исполнительного адреса операнда. В командах с обращением к памяти полученный исполнительный адрес – это смещение, добавляемое к сегменту для нахождения физического адреса операнда в оперативной памяти. Для каждой комбинации значений поля MOD формирование исполнительного адреса определяется полем R/M по таблице 2.

Таблица 2 - Формирование исполнительного адреса

R/M

MOD

00

01

10

смещение

сегмент

смещение

сегмент

смещение

сегмент

000

BX+SI

данных

BX+SI+d8

данных

BX+SI+d16

данных

001

BX+DI

данных

BX+DI+d8

данных

BX+DI+d16

данных

010

BP+SI

стека

BP+SI+d8

стека

BP+SI+d16

стека

011

BP+DI

стека

BP+DI+d8

стека

BP+DI+d16

стека

100

SI

данных

SI+d8

данных

SI+d16

данных

101

DI

данных

DI+d8

данных

DI+d16

данных

110

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

данных

BP+d8

стека

BP+d16

стека

111

BX

данных

BX+d8

данных

BX+d16

данных

d8, d16 – диспозиция (disp) –смещение, заданное в 3-ем и 4-ом байтах формата команды. Разряды MOD определяют количество байтов смещения, применяемых при расчете исполнительного адреса:

MOD=00 disp=0,

MOD=01 команда содержит 8-разрядное смещение,

MOD=10 команда содержит 16-разрядное смещение.

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