Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania.doc
Скачиваний:
14
Добавлен:
03.03.2016
Размер:
6.75 Mб
Скачать

Примеры разбора команд

1. Команды с регистровой адресацией

2A C3 sub al,bl.

В команде два байта.

Первый байт (2А): Второй байт (С3) (постбайт):

kop d w Mod reg r/m

001010 1 0. 11 000 011.

кор – код операции команды вычитания

d=1,т.к. результат записывается в регистр

w=0, определяет размер операндов, равный одному байту

mod=11 – регистровая адресация

reg=000 задает код регистра al (см. табл.1),

r/m=011 задает код регистра bl.

2.Команды с прямой адресацией

8A 1E 0000r mov bl

Команда состоит из 4 байт.

Первый байт: Второй байт (постбайт) 3-4 байты

kop d w mod reg r/m disp16

100010 1 0 00 011 110 0000

кор – код операции команды присваивания

d=1,т.к. результат записывается в регистр

w=0, определяет размер операндов, равный одному байту

(mod=00) + (r/m=110) – прямая адресация (см. табл.1)

reg=011 задает код регистра bl.

disp16 - смещение переменной А в сегменте данных или прямой адрес переменной А. По листингу программы можно убедиться в том, что смещение переменной А в сегменте данных действительно равно 0000h.

3. Арифметические команды с непосредственной адресацией

80 C3 01 add bl,1.

В команде три байта.

Первый байт: Второй байт: Третий байт:

kop s w Mod reg r/m непосредственный операнд

100000 0 0 11 000  011 01

Комбинация значений s=0 и w=0 показывает, что непосредственный операнд занимает один байт.

mod=11указывает на то, что первый операнд регистр.

r/m= задает код регистра bl

reg= не используется для кодировки второго операнда, а содержит код для расширения кода операции. Так используется поле reg во всех арифметико-логических командах с непосредственным операндом.

4. Команда mov с непосредственной адресацией

B1 04 mov cl,4.

В команде 2 байта, причем отсутствует постбайт.

Первый байт: Второй байт:

Kop w reg непосредственный операнд

1011 0 001. 04

кор – код операции mov.

w=0, определяет размер операндов, равный одному байту

reg=001 содержит номер регистра cl.

Второй байт команды – это непосредственный операнд.

5. Команды с использованием аккумулятора

  1. A0 0000r mov al,А.

Команда состоит из трех байт.

Первый байт: 2-3 байты:

Kop w disp16

1010000 0. 0000

кор – код операции mov.

w=0, определяет размер операндов (использование аккумулятора al)

disp16=0000 - смещение переменной А в сегменте данных или прямой адрес переменной А (можно убедиться по листингу программы).

Формат рассмотренной команды не использует постбайт, В арифметико-логических командах и командах пересылки данных используются сокращенные форматы команд в случае использования в качестве операнда регистра-аккумулятора (AL или AX).

6. Команды условного перехода (с относительной адресацией)

0017 74 11 je m2

0019 ……

002А m2: ……

Команда состоит из двух байт.

0017 – смещение самой команды относительно сегмента кода.

Первый байт: Второй байт:

Kop disp8

01110100 11

кор – код операции je.

disp8 – относительное смещение, рассчитанное следующим образом:

002A - адрес метки m2

- 0019 - адрес команды, следующей за je (см. пример отчета)

11

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