(MULtiply)
Умножение целочисленное без учета знака
Схема команды:
| mul множитель_1
|
Назначение: операция умножения двух целых чисел без учета знака.
Синтаксис
Алгоритм работы:
Команда выполняет умножение двух операндов без учета знаков. Алгоритм зависит от формата операнда команды и требует явного указания местоположения только одного сомножителя, который может быть расположен в памяти или в регистре. Местоположение второго сомножителя фиксировано и зависит от размера первого сомножителя:
- если операнд, указанный в команде — байт, то второй сомножитель должен располагаться в al;
- если операнд, указанный в команде — слово, то второй сомножитель должен располагаться в ax;
- если операнд, указанный в команде — двойное слово, то второй сомножитель должен располагаться в eax.
Результат умножения помещается также в фиксированное место, определяемое размером сомножителей:
- при умножении байтов результат помещается в ax;
- при умножении слов результат помещается в пару dx:ax;
- при умножении двойных слов результат помещается в пару edx:eax.
Состояние флагов после выполнения команды (если старшая половина результата нулевая):
|
|
|
|
|
|
OF
| SF
| ZF
| AF
| PF
| CF
|
| ?
| ?
| ?
| ?
|
|
Состояние флагов после выполнения команды (если старшая половина результата ненулевая):
|
|
|
|
|
|
OF
| SF
| ZF
| AF
| PF
| CF
|
| ?
| ?
| ?
| ?
|
|
Применение:
Команда mul выполняет целочисленное умножение операндов без учета их знаковых разрядов. Для этой операции необходимо наличие двух операндов-сомножителей, размещение одного из которых фиксировано, а другого задается операндом в команде. Контролировать размер результата удобно используя флаги cf и of.
mn_1 db 15mn_2 db 25... mov al,mn_1 mul mn_2 |
См. также: урок 8 и команду imul