M
Если содержимое регистра АН после однобайтового умножения или содержимое регистра DX после двухбайтового умножения не равны 0, флаги CF и OF устанавливаются в 1. В противном случае оба флага сбрасываются в 0.
В качестве операнда-сомножителя команды mul можно указывать регистр (кроме сегментного) или ячейку памяти; не допускается умножение на непосредственное значение. Команда воздействует на флаги OF и CF.
Пример 1:
mov AL,5; Первый сомножитель mov BL,3; Второй сомножитель mul BL; AX=000Fh, произведение
Пример 2:
mov AX,256; Первый сомножитель mov BX,256; Второй сомножитель mul BX; DX=0001h, AX=0000h ;(DX:AX=65536, произведение)
Пример 3:
;В полях данных coef db 100; Первый сомножитель datal db 126; Второй сомножитель mov AL,datal; AL=7Eh=126 mul coef; AX=3138h=12600,произведение
Пример 4:
;B полях данных coef dw 5000; Первый сомножитель datal dw 1200; Второй сомножитель mov AX,datal; AX=4BOh=1200 mul coef; DX=005Bh, AX=8D80h ;Произведение=ВХ:AX= ;5B8D80h=6000000
Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров. При этом, если указанный операнд представляет собой 32-байтовую величину, то результат размещается в регистрах EDX:EAX.
Пример 1:
mov EAX,200h; Первый сомножитель mov ESI,l000000lh; Второй сомножитель mul ESI; Произведение в EDX:EAX ;EDX=00000020h,EAX=00000200h
Пример 2:
; В полях данных nmbs db 15.22.36.78.84.98.100 ;В программном сегменте mov EDX,offset nmbs; Относительный адрес movzx EDX,DX; массива mov ECX,5; Смещение в массиве mov AL,10; Множитель mul byte ptr [EDX] [ЕСХ]; Умножаем элемент ;массива с индексом 5 (98) ;на AL (10) Результат в ;АХ=980