Лекции по Вычислительным машинам, системам и сетям   

2. Микропроцессорный комплект К1810

2.26. Формат машинной команды ВМ86

Машинная команда микропроцессора 8086 имеет формат, приведенный на рис. 2.37.

префиксы

 

КОП

 

постбайт

 

disp

 

data

Рис. 2.37

Префикс – это байт, идущий перед командой и несколько меняющий ее смысл. Для МП 8086 допустимы: префикс блокировки, префикс замены сегмента и префикс повторения. В большинстве команд префиксы отсутствуют, однако в команде могут использоваться и все три префикса одновременно. Префикс блокировки (lock) имеет значение 11110000. Префикс замены сегмента имеет формат 011sr110. Поле sr задает сегментный регистр, который используется в команде (табл. 2.6). Префикс повторения (rep) имеет значение 11110011 (или в еще одном варианте 11110010).

Таблица 2.6

sr

Сегментный регистр

00

es

01

cs

10

ss

11

ds

Поле КОП – единственное из полей, которое всегда присутствует в команде. Занимает это поле, в зависимости от команды, один или два байта. Младший бит этого поля (w) в большинстве случаев задает разрядность операции. При w = 0 команда работает с байтом, при w = 1 – со словом.

Постбайт либо в команде отсутствует, либо занимает один байт. Это поле задает регистры, которые принимают участие в формировании адресов операндов. Формат постбайта приведен на рис. 2.38.

Рис. 2.38

Поле reg (регистр) задает регистр в двухоперандных командах (табл. 2.7). Аналогично трактуется поле rm (регистр/память) при md = 11 (mode – режим). При других значениях md, поле rm задает способ формирования адреса памяти (табл. 2.8). Поле disp (dispersion – смещение) задает смещение при базовой адресации (или адрес при прямой адресации) и может занимать 0, 1 или 2 байта. Поле data (операнд) присутствует, если в команде используется непосредственная адресация.

Таблица 2.7

reg

w = 0

w = 1

000

al

ax

001

cl

cx

010

dl

dx

011

bl

bx

100

ah

sp

101

ch

bp

110

dh

si

111

bh

di

Таблица 2.8

rm

md = 00

md = 01

md = 10

000

bx+si

bx+si+disp8

bx+si+disp16

001

bx+di

bx+di+disp8

bx+di+disp16

010

bp+si

bp+si+disp8

bp+si+disp16

011

bp+di

bp+di+disp8

bp+di+disp16

100

si

si+disp8

si+disp16

101

di

di+disp8

di+disp16

110

disp16

bp+disp8

bp+disp16

111

bx

bx+disp8

bx+disp16

Например, команда lock add cs: [bp+di+100h], 77h имеет шестнадцатеричное представление: F0 2E 80 83 0010 77 (F0 – младший байт в ОП). Здесь F0 – префикс блокировки (lock), 2E – префикс замены сегмента (cs: ), 80 – код команды (операции) (add), 83 – постбайт (задает способ формирования адреса: bp+di+disp), 0010 – смещение (100h) и 77 – непосредственный операнд.



*****

© 2009-2017 Банк лекций siblec.ru
Лекции для преподавателей и студентов. Формальные, технические, естественные, общественные, гуманитарные, и другие науки.