Лекція № 15

Її операнд може знаходитися в регістрі або в пам’яті. Команда neg замінює значення регістра або операнда в пам’яті його точним доповненням у двійковій системі числення, тобто числом, яке при додаванні до початкового операнда дає суму рівну нулеві в усіх розрядах і перенесення зі старшого розряду.

Операндом команди може бути регістр або комірка пам’яті

Операндом команди може бути регістр або комірка пам’яті

Команди додавання, віднімання і порівняння

Результати виконання арифметичних операцій фіксуються в шести прапорцях of, cf, sf, pf, af, cf регістра eflags. Стан прапорців можна проаналізувати за допомогою команд умовного переходу. Передбачена також команда into – переривання при переповненні (прапорець of=1).

Команди додавання. Дві основні команди додавання add і adc додавання з перенесенням. Вони мають узагальнений вигляд (після крапки з комою вказано алгоритм виконання):

add dst, src; dst=(dst)+(src) і формуються прапорці

adc dst, src; dst=(dst)+(src)+(cf) і формуються прапорці.

Форми команди add:

add reg/mem, imm; Розміри 8/16/32

add reg, reg/mem; Розміри 8/16/32

add reg/mem, reg; Розміри 8/16/32

add reg/mem16, imm8; Приймач 16, джерело 8 бітів

add reg/mem32, imm8; Приймач 32, джерело 8 бітів

У двох останніх формах розмір безпосереднього операнда менший розміру приймача, тому джерело розширюється зі знаком до розміру приймача.

Такі ж форми має команда adc.

Якщо додаються операнди як без знакові числа, то значення прапорця cf=1 означає, що відбулося переповнення. Якщо ж додаються знакові числа, то переповнення тут фіксує прапорець of, а значення прапорця cf не несе корисної інформації.

До команд додавання відносять також команду

inc dst; dst=(dst)+1.

inc reg/mem; Розмір 8/16/32.

Ця команда еквівалентна команді add dst,1, однак вона не впливає на прапорець cf.

Команди віднімання. Дві основні команди віднімання sub і sbb віднімання з перенесенням. Вони мають узагальнений вигляд (після крапки з комою вказано алгоритм виконання):



sub dst, src; dst=(dst) – (src) і формуються прапорці

sbb dst, src; dst=(dst) –(src) –(cf) і формуються прапорці.

Відзначимо, що в операції віднімання прапорець cf перетворюється у прапорець позичання.

Форми команди sub:

sub reg/mem, imm; Розміри 8/16/32

sub reg, reg/mem; Розміри 8/16/32

sub reg/mem, reg; Розміри 8/16/32

sub reg/mem16, imm8; Приймач 16, джерело 8 бітів

sub reg/mem32, imm8; Приймач 32, джерело 8 бітів

У двох останніх формах розмір безпосереднього операнда менший розміру приймача, тому джерело розширюється зі знаком до розміру приймача.

Такі ж форми має команда sbb.

До команд віднімання відносять також команду

dec dst; dst=(dst) – 1.

dec reg/mem; Розмір 8/16/32.

Ця команда еквівалентна команді sub dst,1 за винятком, що вона не впливає на прапорець перенесення cf.

До команд віднімання відноситься команда neg

neg reg/mem; Розмір 8/16/32.

Прапорець cf=1, якщо початковий операнд відмінний від 0, інакше – cf=0. Операнд віднімається від 0, результат записується на місце початкового операнда, прапорці of, sf, zf і pf формуються за результатом операції.

Увага. Якщо початковий операнд є мінімальне від’ємне число, то його величина не змінюється, а прапорці cf і of стають рівними 1.

Команда порівняння cmp.Має таке зображення:

cmp dst, src; (dst) – (src) і формуються прапорці.

Форми команди аналогічні формам команд віднімання. Від вмісту приймача віднімається вміст джерела і за одержаним результатом формуються прапорці. Стан прапорців можна визначити за допомогою команд умовного переходу. Наведемо їх стан у таблиці

Таблиця 15.1 Стан прапорців після команди порівняння

Відношення Знакові числа Числа без знаку
і або і або


8388113242516171.html
8388158721261617.html

8388113242516171.html
8388158721261617.html
    PR.RU™