Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНСПЕКТ ЛЕКЦИЙ ПО АССЕМБЛЕРУ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
471.55 Кб
Скачать

Команда сравнения cmp

CMP OP1,OP2

Работает аналогично команде вычитания, однако результат формируется, но не записывается в поле ОР1. По значению результата взводятся все 6 флагов. Позволяет сравнивать знаковые и беззнаковые операнды. Обычно после этой команды стоит команда условного перехода.

Команды безусловного перехода jmp

JMP MET

Рассмотрим два формата этой команды из 5 существующих.

1. Короткий относительный переход

Осуществляет переход в пределах от -128..127

Формат:

┌───────┐ ┌───────┐

│ KOP │ │ dispL │ – смещение

└───────┘ └───────┘

Для работы этой команды требуются метки.

0308 m1: mov al,cl

.......................

.......................

0321 jmp m1 ; 2 байта

0323 jmp m2 ; 2 байта

0325 mov al,5

.......................

.......................

033f m2: add al,cl

Рассмотрим формирование поля disp jmp m1

Команда занимает 2 байта

disp = ( адрес m1 )-( адрес след. команды )

0308h Короткий переход формируется, если число

- 0323h расположено в пределах от -128..127. В

-------- этом случае знаковый разряд младшего байта поля disp и все биты

f f e5h старшего байта совпадают

┌┬┬┬┬┬┬┬──────┐

┌────────┐ ┌────────┐

│11111111│ │11100101│

└────────┘ └────────┘

Старший байт disp содержит распространение знакового разряда и поэтому может не использоваться.

В данном случае disp = e5h, это число отрицательное, следовательно переход будет выполняться назад.

Рассмотрим алгоритм выполнения команды:

JMP M1

1) IP = IP +2=0321+2 =0323h

2)disp = E5h – команда вычисляет адрес перехода, который всегда 16-ти разрядный, поэтому необходимо выполнить расширение смещения до слова, как это делает команда CBW.

При расширении:

┌───┬───┐

disp │ FF│ E5│

└───┴───┘

IP = 0323h +

Disp=FFE5h

-----

033Fh = IP

Результат заносится в регистр IP.

Следующая команда выбираться по адресу 033Fh. Все команды перехода изменяют естественный порядок следования команд.

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

Напомним определение адресации.

АДРЕСАЦИЯ – это способ вычисления адреса перехода или адреса операндов. В арифметико-логических командах вычисления – адреса операндов, а в командах перехода и управления – адреса переходов.

Покажем, как транслятор ассемблера вычисляет поле смещения команды JMP M2

JMP M2

┌───────┐ ┌───────┐

│ KOП │ │ disp │

└───────┘ └───────┘

1)P = IP +2=0323+2 =0325

адрес М2 033Fh

адрес команды -0325h

--------------------

disp = 001Ah

Старший байт disp содержит распространение знакового разряда и поэтому может не использоваться. В данном случае disp = 1Аh.

Выполнение команды:

JMP M2

1) IP = IP +2=0323+2 =0325h

2)disp = 1А h – команда вычисляет адрес перехода, который всегда 16-ти разрядный, поэтому необходимо выполнить расширение смещения до слова, как это делает команда CBW.

При расширении:

┌───┬───┐

disp │ 00│ 1А│

└───┴───┘

IP = 0325h +

Disp=001Аh

-----

0308h = IP

Результат заносится в регистр IP.

Следующая команда выбираться по адресу 0308h.