Деление двоичных чисел без знака

Для деления чисел без знака предназначена команда

DIV делитель.

Делитель может находиться в памяти или в регистре и иметь размер 8, 16 или 32 разряда. Местонахождение делимого фиксировано и так же, как в команде умножения, зависит от размера операндов. Результатом команды деления являются частное и остаток.

 

Таблица 9. – Расположение операндов и результата при делении

 

Делимое Делитель Частное Остаток
Слово (16 бит) в регистре AX Байт в регистре или в ячейке памяти Байт в регистре AL Байт в регистре AH
Двойное слово (32 бит), в DX – старшая часть, в AX – младшая часть Слово (16 бит) в регистре или ячейке памяти Слово (16 бит) в регистре AX Слово (16 бит) в регистре DX
Учетверённое слово (64 бит), в EDX – старшая часть, в EAX – младшая часть Двойное слово (32 бит) в регистре или ячейка памяти Двойное слово (32 бит) в регистре EAX Двойное слово (32 бит) в регистре EDX

 

После выполнения деления содержимое флагов неопределенно, но возможно возникновение прерывания с номером 0, называемого “деление на ноль”. Прерывание 0 при выполнении команды div может возникнуть из-за следующих причин:

· делитель равен нулю;

· частное не входит в отведенную для него разрядную сетку.

Рассмотрим деление значения в области del на значение в области delt :

.data

del_b label byte

del dw 29876

del_t db 45

.code

xor ax,ax

;следующие две команды можно заменить одной mov ax,del

mov ah,del_b ;старший байт делимого в ah

mov al,del_b+1 ;младший байт делимого в al

div delt ;в al – частное, в ah – остаток