###
Команда MUL
#########################################################
### Производит умножение аккумулятора и операнда
команды. Сомножители
интерпретируются как беззнаковые числа.
В операциях над байтами функцию аккумулятора
выполняет регистр AL, а
16-битное произведение образуется в регистре AX.
Максимальное значение
произведения равно 255 * 255 = 65025.
Если операнд идентифицирует слово, оно умножается
на аккумулятор AX,
а 32-битное произведение формируется в регистрах DX (старшая часть)
и AX.
### Если старшая половина произведения не равна нулю, то флажки CF
и OF
устанавливаются в единицу. Состояние остальных
флажков не определено.
### Форматы команды:
7
0
+-------------------------+ l = 2 байта
+----------------+
¦ MUL Регистр
¦ t = 70...77 тактов
¦ 1111011 w
¦
+-------------------------+ (пpи байте pегистpа)
¦----------------¦
t = 118…133 такта
¦ 11100 reg
¦
(при слове регистра)
+----------------+
7
0
+-------------------------+ l = 2-4 байта
+----------------+
¦ MUL Память
¦ t = (76…83)+ЕА тактов ¦
1111011 w ¦
+-------------------------+ (пpи байте памяти)
¦----------------¦
t = (124…139)+EA тактов¦ mod
100 r/m ¦
(пpи слове памяти)
¦----------------¦
¦ dispL
¦
+----------------¦
¦ dispH
¦
+----------------+
### Примечание:
При умножении на числа, котоpые
являются степенями 2,
удобнее
пользоваться командой сдвига влево SAL.
### Команда IMUL
#########################################################
### Производит умножение аккумулятора и операнда
команды. Сомножители
интерпретируются как знаковые числа.
В операциях над байтами функцию аккумулятора
выполняет регистр AL, а
16-битное произведение образуется в регистре AX.
Если операнд идентифицирует слово, оно умножается
на аккумулятор AX,
а 32-битное произведение формируется в регистрах DX (старшая часть)
и AX.
### Если старшая половина произведения не равна 00(0000) или
FF(FFFF), то
флажки CF и OF устанавливаются в единицу. Состояние
остальных флажков не
определено.
### Форматы команды:
7
0
+-------------------------+ l = 2 байта
+----------------+
¦ IMUL Регистр
¦ t = 80…98 тактов
¦ 1111011 w
¦
+-------------------------+ (пpи байте pегистpа)
¦----------------¦
t = 128…154 такта
¦ 11101 reg
¦
(при слове регистра)
+----------------+
7
0
+-------------------------+ l = 2-4 байта
+----------------+
¦ IMUL Память
¦ t = (86…104)+ЕА тактов ¦
1111011 w ¦
+-------------------------+ (пpи байте памяти)
¦----------------¦
t = (134…160)+EA тактов¦ mod
101 r/m ¦
(при слове памяти)
¦----------------¦
¦ dispL
¦
+----------------¦
¦ dispH
¦
+----------------+
### Команда DIV
#########################################################
### Производит деление аккумулятора и его расширения на содержимое
операнда
команды. Деление выполняется над
числами, интерпретированными
как
беззнаковые. Делимое должно быть в 2 раза длиннее делителя.
Байтовые команды делят 16-битовое число,
расположенное в аккумуляторе
AX, на 8-битный делитель. Частное результата
помещается в регистр AL, а
остаток в регистр AH.
Команда, работающая со словами, делит
32-битовое число, расположенное
в регистре DX (старшая часть) и аккумуляторе AX, на
16-битный делитель.
Частное результата помещается в регистр AX, а остаток в регистр DX.
### Состояние регистра флажков не определено.
### Форматы команды:
7
0
+-------------------------+ l = 2 байта
+----------------+
¦ DIV Регистр
¦ t = 80…90 тактов
¦ 1111011 w
¦
+-------------------------+ (пpи байте pегистpа)
¦----------------¦
t = 144…162 такта
¦ 11110 reg
¦
(пpи слове pегистpа)
+----------------+
7
0
+-------------------------+ l = 2-4 байта
+----------------+
¦ DIV Память
¦ t = (86…96)+ЕА тактов ¦
1111011 w ¦
+-------------------------+ (пpи байте памяти)
¦----------------¦
t = (150…168)+EA тактов¦ mod
110 r/m ¦
(при слове памяти)
¦----------------¦
¦ dispL
¦
+----------------¦
¦ dispH
¦
+----------------+
### Примечание:
Если частное результата
превышает разрядность
аккумулятора или
делитель равен нулю, генерируется прерывание типа 0, а частное и
остаток
не определены. Если нет подпрограммы
обработки такого
прерывания,
необходимо до операции деления проверить возможность его
возникновения.
При делении на числа,
котоpые являются
степенями 2, удобнее
пользоваться командой сдвига вправо.
### Команда IDIV
#########################################################
### Производит деление аккумулятора и его расширения на содержимое
операнда
команды. Деление выполняется над числами, интерпретированными как
знаковые.
Делимое должно быть в 2 раза длиннее делителя.
Байтовые команды делят 16-битовое число,
расположенное в аккумуляторе
AX, на 8-битный делитель. Частное результата помещается в
регистр AL, а
остаток в регистр AH.
Команда, работающая со словами, делит
32-битовое число, расположенное
в регистре DX (старшая часть) и аккумуляторе AX, на
16-битный делитель.
Частное результата помещается в регистр AX, а остаток в регистр DX.
### Состояние регистра флажков не определено.
### Форматы команды:
7
0
+-------------------------+ l = 2 байта
+----------------+
¦ IDIV Регистр
¦ t = 101…112 тактов
¦ 1111011 w
¦
+-------------------------+ (пpи байте pегистpа)
¦----------------¦
t = 165…184 такта
¦ 11111 reg
¦
(при слове регистра)
+----------------+
7
0
+-------------------------+ l = 2-4 байта
+----------------+
¦ IDIV Память
¦ t = (107…118)+ЕА тактов¦
1111011 w ¦
+-------------------------+ (пpи байте памяти)
¦----------------¦
t = (107…190)+EA тактов¦ mod
111 r/m ¦
(при слове памяти)
¦----------------¦
¦ dispL
¦
+----------------¦
¦ dispH
¦
+----------------+
### Примечание:
Если частное результата
превышает разрядность
аккумулятора или
делитель равен нулю, генерируется прерывание типа 0, а частное и
остаток
не определены. Если нет подпрограммы
обработки такого
прерывания,
необходимо до операции деления проверить возможность его
возникновения.
Если результат отрицательный,
частное усекается (в
направлении
нуля), а остаток имеет тот же знак, что и делимое. Например:
+---------------------------------------------------+
¦делимое (AX)¦
делитель ¦частное (AL)¦остаток
(AH)¦
+------------+------------+------------+------------¦
¦
7 ¦
2 ¦
3 ¦
1 ¦
¦
7 ¦
- 2 ¦
- 3 ¦
1 ¦
¦ - 7
¦ 2
¦ - 3
¦ - 1
¦
¦ - 7
¦ - 2
¦ 3
¦ - 1
¦
+---------------------------------------------------+
|