Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler_konspekt_1.doc
Скачиваний:
16
Добавлен:
10.11.2019
Размер:
274.94 Кб
Скачать
  1. Формат «Регистр-регистр» (Рг-Рг) – 2 байта

Например,

Mov AL, AH

Выполняет пересылку AL := AH

В общем виде

reg? := reg1 ¤ reg2

Формат команды (см. рис.4)

1-й байт

2-й байт

КОП

d

w

md

reg1

reg2

Рис. 4

Здесь w – определяет размер операндов, т.е. w = 0 – слова (2 байта), w = 1 – байты;

d – бит направления пересылки, d = 0 – приемник результата - reg1, d = 1 – приемник результата – reg2;

md – поле режима адресации (2 бита), для формата «Рг-Рг» md = 11;

reg1, reg2 – содержат трехразрядный двоичный код, который обозначает конкретный регистр МП . (см. табл.1):

Таблица 1.

Значение поля reg

000

001

010

011

100

101

110

111

Адресуемый

w=0

AL

CL

DL

BL

AH

CH

DH

BH

регистр

w=1

AX

CX

DX

BX

SP

BP

SI

DI

  1. Формат «Регистр-память» (Рг-яп) – 2÷4 байта

Например,

Mov AX, X ; AX := ОП(X)

Mov X, AX ; ОП(X) := AX

Здесь запись ОП(X) означает ячейку оперативной памяти, адресованную при помощи имени X.

Формат команды (см. рис.5)

1-й байт

2-й байт

3-й, 4-й байты

КОП

d

w

md

reg

r/m

Adr (0 ÷ 2 байта)

Рис. 5

Здесь w – см. выше;

d – см. выше, а именно при d = 0 – запись результата в ячейку памяти, при d = 1 – запись результата в регистр;

md – указывает, сколько байтов в команде занимает адрес в двоично-кодированном виде ( т.е. может принимать значения 00, 01, 10);

поле r/m указывает способ модификации адреса.

От сочетания полей md и r/m могут образоваться различные способы адресации.

Так при md = 00 и r/m = 110 – прямая адресация, т.е. в следующем 3-ем байте команды указан адрес ячейки памяти.

При других сочетаниях образуются следующие способы адресации:

- базово-индексная, при которой физический адрес вычисляется по выражению

[Рг Б] + [Рг И] + disp,

где disp – смещение, которое может быть константой или выражением;

[Рг Б] – содержимое базового регистра, а именно BP или BX;

[Рг И] – содержимое индексного регистра, а именно SI или DI;

- индексная адресация - [Рг И] + disp;

- базовая адресация - [Рг Б] + disp;

- при disp = 0 адресация называется косвенной.

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

В программе на ЯА можно записать эти способы адресации разными формами записи (см табл. 2 ).

Таблица 2

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

Обозначение операнда в команде ЯА

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

disp[Рг Б] [Рг И]

disp[Рг Б] + [Рг И]

disp[Рг Б + Рг И]

Индексная

disp[Рг И]

[Рг И] + disp

Базовая

disp[Рг Б]

[Рг Б] + disp

Косвенная

[Рг И]

[Рг Б]

В поле adr содержится указание адреса в “польской инверсной записи” (или LEM – little endian method), при которой младший байт располагается раньше старшего.

Например, адрес 620Bh займет в команде 2 байта

1-й байт

2-й байт

3-й байт

4-й байт

0B

62

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