ХАНДЫФАР

Беззнаковое умножение


___________________MUL reg/mem8 - Умножение без знака (AX := AL = reg/mem8).

___________________MUL reg/mem16 - Умножение без знака (DX:AX := AX ∗ reg/mem16).


Выполняет умножение без знака первого операнда (операнд назначения) и второго операнда (операнд источника) и сохраняет результат в операнде назначения. Целевой операнд - это подразумеваемый операнд, расположенный в регистре al или ax (в зависимости от размера операнда); исходный операнд находится в регистре общего назначения или в ячейке памяти. Действие этой инструкции и расположение результата зависят от кода операции и размера операнда, как показано в таблице ниже.


Результат сохраняется в регистре ax или в паре регистров dx:ax (в зависимости от размера операнда), причём старшие разряды произведения содержатся в регистрах ah или dx соответственно. Если старшие разряды произведения равны 0, флаги CF и OF снимаются; в противном случае флаги устанавливаются.


Флаги OF и CF устанавливаются равными 0, если старшая половина результата равна 0; в противном случае они устанавливаются равными 1. Флаги SF, ZF, AF и PF не определены.


В качестве примера рассмотрим случай, когда регистр ax содержит 3510 (003216), регистр bx содержит 6910 (004516). После выполнения инструкции mul bx регистр ax будет содержать 241510 (096F16), регистр dx будет содержать 0.


  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. code segment public _______; Начало сегмента кода
  5. ____assume cs:code
  6. ____main proc _____________; Начало процедуры main
  7. ________mov_____ax, 35_____; Копируем значение 35 в регистр ax
  8. ________mov_____bx, 69_____; Копируем значение 69 в регистр bx
  9. ________mul_____bx_________; Выполняем умножение ax на bx
  10. ________mov_____ax, 4C00h__; Копируем значение функции завершения процесса в ah а значение в al
  11. ________int_____21h _______; Вызываем прерывание DOS
  12. ____main endp _____________; Конец процедуры main
  13. code ends _________________; Конец сегмента кода
  14. end main __________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda