Справочник по языку Ассемблера IBM PC

       

MUL


(MULtiply)

Умножение целочисленное без учета знака

 

Схема команды:  mul множитель_1 

Назначение: операция умножения двух целых чисел без учета знака.


Алгоритм работы:


Команда выполняет умножение двух операндов без учета знаков. Алгоритм зависит от формата операнда команды и требует явного указания местоположения только одного сомножителя, который может быть расположен в памяти или в регистре. Местоположение второго сомножителя фиксировано и зависит от размера первого сомножителя:

    если операнд, указанный в команде — байт, то второй сомножитель должен располагаться в al;

    если операнд, указанный в команде — слово, то второй сомножитель должен располагаться в ax;



    если операнд, указанный в команде — двойное слово, то второй сомножитель должен располагаться в eax.

    Результат умножения помещается также в фиксированное место, определяемое размером сомножителей:

      при умножении байтов результат помещается в ax;

      при умножении слов результат помещается в пару dx:ax;

      при умножении двойных слов результат помещается в пару edx:eax.

      Состояние флагов после выполнения команды (если старшая половина результата нулевая):

      11 07 06 04 02 00
      OF SF ZF AF PF CF
      0 ? ? ? 0

      Состояние флагов после выполнения команды (если старшая половина результата ненулевая):

      11 07 06 04 02 00
      OF SF ZF AF PF CF
      1 ? ? ? 1

      Применение:


      Команда mul выполняет целочисленное умножение операндов без учета их знаковых разрядов. Для этой операции необходимо наличие двух операндов-сомножителей, размещение одного из которых фиксировано, а другого задается операндом в команде. Контролировать размер результата удобно используя флаги cf и of.

      mn_1    db      15 mn_2    db      25 ...         mov     al,mn_1         mul     mn_2         

      См. также: урок 8 и команду



      Содержание раздела