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


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


mem dw 68

;B программном сегменте

dec mem mem=67

Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример


mov EAX, 0

dec EAX ;EAX=FFFFFFFFh

DIV Деление целых чисел без знака


Команда div выполняет деление целого числа без знака, находящегося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (целое число без знака). Размер делимого в два раза больше размеров делителя и остатка.

Для однобайтовых операций делимое помещается в регистр АХ; после выполнения операции частное записывается в регистр AL, остаток - в регистр АН.

Для двухбайтовых операций делимое помещается в регистры DX:AX (в DX - старшая часть, в АХ - младшая); после выполнения операции частное записывается в регистр АХ, остаток - в регистр DX.

В качестве операнда-делителя команды div можно указывать регистр (кроме сегментного) или ячейку памяти; не допускается деление на непосредственное значение. Если делитель равен 0, или если частное не помещается в назначенный регистр, возбуждается прерывание с вектором 0. Команда не воздействует на флаги процессора.

Команду div можно использовать для целочисленного деления неупакованного двоично-десятичного числа в регистре АХ не неупакованный двоично-десятичный делитель, если перед ней выполнить команду aad (см. пример 3).

Пример 1


mov AX,506 ;Делимое

mov BL,50 ;Делитель

div BL ;AL=0Ah (частное), AH=06h (остаток)


Пример 2


; В полях данных

long dd 65537 ;Делимое

;В программном сегменте

mov DX,word ptr long+2 ;DX=0001h, старшая

;часть делимого

mov AX,word ptr long ;AX=0001h, младшая

;часть делимого

mov CX,256 ;Делитель

div CX ;AX=0100h (частное),

;DX=0001h (остаток)


Пример З


mov AX,0807h ;Неупакованное BCD 87

mov DL,09h ;Неупакованное BCD 9

aad ;AX=0057h=87

div DL ;AX=0609h, т.е. 9 и 6 в остатке

Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров. При этом, если делитель представляет 32-битовую величину, то возможен только один вариант команды деления, когда делимое находится в парс регистров EDX:EAX. В этом случае частное будет помещено в регистр ЕАХ, остаток - в EDX.




Начало  Назад  Вперед



Книжный магазин