Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASMMET.DOC
Скачиваний:
24
Добавлен:
27.03.2015
Размер:
339.46 Кб
Скачать

Структура и формат команд

Основные команды могут иметь длину от 1 до 6 байт. Код операции всегда содержится в первом байте команды, а последующие байты, если они имеются, содержат адресную информацию. В этом микропроцессоре широко используется закрепление функций и режимов по умолчанию. Это позволяет экономить на длине команд и времени их выполнения.

Для того чтобы отменить определенный режим вызова операции, установленный по умолчанию, перед байтом кода операции могут быть помещены один или несколько байтов, называемых «префиксом команды». «Префикс команды» можно рассматривать по-разному. На языке ассемблера префикс рассматривается как часть команды, т.к. его действие распространяется только на одну команду или ее часть. На уровне машинных команд префикс удобно рассматривать как специальную команду, устанавливающую режим выполнения следующей команды.

Команды МП оперируют с операндами, хранящимися в памяти ЭВМ. Способы определения операнда называются режимом или способом адресации. В некоторых командах способ адресации операнда задается в первом байте команды, в других – информация о способе адресации содержится во втором байте команды, называемом постбайтом.

Постбайт может определять один или два операнда. Структура постбайта имеет вид:

7

6

5

4

3

2

1

0

КОП OP1, OP2

MOD

REG / OP

R / M

Поля MOD иR/M определяют первый операнд, полеREG/OP – второй. ОбычноOP1является приемником, аOP2 источником. В некоторых командах допускается изменение направления передачи данных. В таких командах в первом байте вводится полеd, определяющее направление передачи данных, если d=1 то в регистр, еслиd=0 то из регистра.

Второй операнд, если он имеется, всегда находится в регистре, задаваемым полем REG/OP. В командах с одним операндом полеREG/OP используется для расширения кода операции, записанного в первом байте команды.

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

Если команда оперирует с сегментными регистрами, то содержимое поля REG расценивается как номер сегментного регистра, иначе как номер регистра общего назначения. При этом, если команда может оперировать и байтом и словом, то в коде операции есть битW, который определяет длину операнда ( W=0 - байт,W=1 - слово). Используемые регистры и их номера приведены в таблице 2.

Номер регистра

Рег. общего назначения

Сегмент.

Регистры

Короткий номер сегментного регистра

W = 1

W = 0

000

AX

AL

ES

00

001

CX

CL

CS

01

010

DX

DL

SS

10

011

BX

BL

DS

11

100

SP

AH

101

BP

CH

110

SI

DH

111

DI

BH

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

Способ формирования эффективного адреса и используемый по умолчанию сегментный регистр в зависимости от значения полей MOD иR/M приведен в таблице 3.

Операнд в памяти

Операнд в регистре

MOD

00

01

10

11

R/M

W = 0

W = 1

000

DS:

(BX)+(SI)

DS:

(BX)+(SI)+D8

DS:

(BX)+(SI)+D16

AL

AX

001

DS:

(BX)+(DI)

DS:

(BX)+(DI)+D8

DS:

(BX)+(DI)+D16

CL

CX

010

SS:

(BP)+(SI)

SS:

(BP)+(SI)+D8

SS:

(BP)+(SI)+D16

DL

DX

011

SS:

(BP)+(DI)

SS:

(BP)+(DI)+D8

SS:

(BP)+(DI)+D16

BL

BX

100

DS:

(SI)

DS:

(SI)+D8

DS:

(SI)+D16

AH

SP

101

DS:

(DI)

DS:

(DI)+D8

DS:

(DI)+D16

CH

BP

110

DS:

D16

SS:

(BP)+D8

SS:

(BP)+D16

DH

SI

111

DS:

(BX)

DS:

(BX)+D8

DS:

(BX)+D16

BH

DI

где D8 - 8-битное смещение,указываемое в команде

D16 – 16-битное смещение,указываемое в команде.

При MOD=16 операнд находится в регистре, номер которого указан в полеR/M.

По умолчанию в режимах адресации с привлечением регистра BP при получении физического адреса используется сегментный регистр SS, в остальных режимах адресации используется сегментный регистр DS.Чтобы изменить используемый сегментный регистр предусмотрена специальная однобайтовая команда – префикс замены сегмента.

Он имеет следующий формат:

7

6

5

4

3

2

1

0

0

0

1

R E G

1

1

0

где REG – короткий адрес сегментного регистра (см. таблицу 2).

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

Нельзя изменить сегментный регистр при:

  • чтении следующей команды (всегдаCS);

  • обращение к стеку с участием SP (всегдаSS);

  • цепочечных командах (сегментный регистр операнда-получателя всегда ЕS).

Длина команд в микропроцессоре варьируется от 1 до 6 байт, не считая префиксов. В первых одном или двух байтах команды содержится код операции и указание способа адресации. После них могут находиться:

  • ни одного дополнительного байта;

  • двухбайтовый эффективный адрес (ЕА);

  • одно или двухбайтное смещение;

  • одно или двухбайтный непосредственный операнд;

  • одно или двухбайтное смещение и одно или двухбайтный непосредственный операнд;

  • двухбайтное смещение и двухбайтный сегментный адрес(только для прямого межсегментного перехода).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]