Иллюстрированный самоучитель по Assembler

D

DAA Десятичная коррекция в регистре AL после сложения

Команда daa корректирует результат сложения в регистре AL двух упакованных двоично-десятичных (BCD) чисел (по одной цифре в каждом полубайте), чтобы получить пару правильных упакованных двоично-десятичных цифр. Команда используется вслед за операцией сложения упакованных двоично-десятичных чисел. Если результат сложения превышает 99, возникает перенос и устанавливается флаг CF. Команда воздействует на флаги SF, ZF, AF, PF и CF.

Пример 1:

mov AL,87h; Упакованное BCD 87
add AL,04h; После сложения AL=8Bh
daa; AL=91h, т.е. упакованное BCD 91

Пример 2:

mov AL,87h; Упакованное BCD 87
add AL,11h; После сложения AL=97h
daa; AL=97h, т.е. упакованное
;BCD 97 (в данном случае команда daa ничего не делает)

DAS Десятичная коррекция в регистре AL после вычитания

Команда das корректирует результат вычитания в регистре AL двух упакованных двоично-десятичных (BCD) чисел (по одной цифре в каждом полубайте), чтобы получить пару правильных упакованных десятичных цифр. Команда используется вслед за операцией вычитания упакованных двоично-десятичных чисел. Если для вычитания требовался заем, устанавливается флаг CF. Команда воздействует на флаги SF, ZF, AF, PF и CF.

Пример 1:

mov AL,55h; Упакованное BCD 55
sub AL,19h; После вычитания AL=3Ch
das; AL=36h, т.е. упакованное BCD 36

Пример 2:

mov AL,55h; Упакованное BCD 55
sub AL,15h; После вычитания AL=40h
das; AL=40h, т.е. упакованное
;BCD 40 (в данном случае команда das ничего не делает)

DEC Декремент (уменьшение на 1)

Команда dec вычитает 1 из операнда, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Команда воздействует на флаги OF, SF, ZF, AF и PF.

Пример 1:

mov AX,0FFFFh
dec AX; AX=FFFEh

Пример 2:

mov CX,0
dec CX; CX=FFFFh

Пример 3:

mov CX,3500h
dec CL; CX=35FFh

Пример 4:

; В полях данных
mem dw 68
;B программном сегменте
dec mem mem=67

Иллюстрированный самоучитель по Assembler › Приложение. Система команд процессоров Intel. › D Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример:

mov EAX, 0
dec EAX; EAX=FFFFFFFFh
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.