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
Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.
Пример:
mov EAX, 0 dec EAX; EAX=FFFFFFFFh