ХАНДЫФАР
Беззнаковое умножение
___________________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.