Иллюстрированный самоучитель по Assembler

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

Иллюстрированный самоучитель по Assembler › Приложение. Система команд процессоров Intel. › M Допустимо использование 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
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.