Команда DIV - беззнаковое деление - имеет обобщенное представление:
DIV src
ac := guot ((ext:ac) / (src))
ext := rem ((ext:ac) / (src)),
где ас - аккумулятор;
ext - расширение;
guot - частное;
rem - остаток.
Эта команда имеет 2 варианта: для 8-ми и 16-ти битного делителя.
Левый бит рассматривается как бит данных, а не как знаковый бит.
Для 8-ми битового делителя делимое должно находиться в регистре АХ. Частное от деления получается в регистре AL, а остаток в регистре AH.
Для 16-ти битового делителя делимое должно находиться в регистровой паре DX:AX. Частное от деления получается в регистре АХ, а остаток - в регистре СХ.
Команда DIV имеет 2 формата:
1) DIV reg
2) DIV mem
Если частное превышает разрядность аккумулятора (больше FF или FFFF) или делитель является 0, то генерируется прерывание типа 0 по адресу 0000:0002.
IDIV - деление знаковых величин
Команда IDIV - деление знаковых величин - осуществляет практически такие же действия, что и команда DIV, но делимое, делитель, частное и остаток считаются знаковыми числами.
ЗНАКИ
| Делимое
| Делитель
| Частное
| Остаток
|
| +
| +
| +
| +
|
| +
| -
| -
| +
|
| -
| +
| -
| -
|
| -
| -
| +
| -
|
К подгруппе команд деления принадлежат две команды преобразования.
CBW - преобразование байта в слово
Команда CBW - преобразование байта в слово - расширяет (копирует) знак содержимого регистра AL в регистр AH и имеет код 98.