Imul| операнд_1|[,операнд_2,операнд_3|]
Коли вказаний один операнд, IMUL| аналогічна MUL.
Можливі варіанти IMUL|:
imul операнд_1,операнд_2
операнд_1 = операнд_1 * операнд_2
операнд_1 - завжди регістр.
Приклади|зразки|:
imul| edx,ecx| ;EDX = EDX| * ECX|
imul| ebx,var| ;умножає 32-розрядну змінну var| на ЕВХ
imul| есх,6| ; ЕСХ = ЕСХ * 6
imul| операнд_1, операнд_2, операнд_3|
операнд_1| = операнд_2| * операнд_3
|
де операнд_1 - регістр.
операнд_3 - тільки безпосередній операнд.
Приклади|зразки|:
imul| edx,ecx,7| ; EDX| = ECX| * 7
imul ebx,var,9 ; var * 9,результат в EBX
imul| ecx,edx,ll| ;ЕСХ = EDX| * 11
Команди ділення
Ділення|поділ| цілих чисел — це операція цілочисельна, тому в результаті утворюються два значення: частне і залишок|остача|.
мнемокод дільник
|поділи|
Ділення|поділ| двійкових чисел без знаку
Div| дільник
-
Ділиме
Дільник
(регістр, елемент пам'яті)
Частне
Залишок
АХ
1 байт
AL|
АН|
DX| — старша частина|частка|
АХ — молодша частина|частка|
2 байта
АХ
DX|
EDX- старшая| частина|частка|
ЕАХ– молодша частина|частка|
4 байта
ЕАХ
EDX|
Ділення|поділ| двійкових чисел із|із| знаком
Idiv| дільник
Приклад 1. Розділити 13 на 2, частне зберегти в BL|, а залишок|остача| - у ВН:
include irvine32.inc
.code
main PROC
mov| ax,13| ; АХ = 13
mov| cl,2| ; CL| = 2
div| cl| ; ділимо АХ на CL, результат в АХ|
mov bx,ax ; АХ копіюємо у ВХ
exit
main endp
end main
Вміст регістрів|реєстрів| до виконання команди ділення :
AX=13 |
|||||||||||||||
AH |
AL |
||||||||||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
D |
-
CX
CH
CL
0
0
0
0
0
0
1
0
0
2
Вміст регістра|реєстру| AX після виконання команди множення :
-
AX
AH=1
AL=6
0
0
0
0
0
0
0
1
0
0
0
0
0
1
1
0
0
1
0
6
Приклад 2. Обчислити радіус по діаметру, значення якого збережене в 16-бітовій змінній diameter, результат записати в radius, а залишок проігнорувати.