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


MUL Умножение целых чисел без знака


Команда inul выполняет умножение целого числа без знака, находящегося в регистре AL (в случае умножения на байт) или АХ (в случае умножения на слово), на операнд-источник (целое число без знака). Размер произведения в два раза больше размера сомножителей.

Для однобайтовых операций один из сомножителей помещается в регистр AL; после выполнения операции произведение записывается в регистр АХ.

Для двухбайтовых операций один из сомножителей помещается в регистр АХ; после выполнения операции произведение записывается в регистры DX:AX (в DX - старшая часть, в АХ - младшая). Предыдущее содержимое регистра DX затирается.

Если содержимое регистра АН после однобайтового умножения или содержимое регистра 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




Начало  Назад  Вперед



Книжный магазин