Команды MUL и IMUL
Рубрика: Архитектура PC
(Команды CPU)
20887
Опубликовано: 30.04.2017
Команды MUL и IMUL позволяют перемножать два числа. Команда IMUL используется для перемножения чисел со знаком, а команда MUL - для чисел без знака.
Команда IMUL (форма 1)
Синтаксис: | IMUL op1 |
Операнды: | op1 - r/m8, r/m16, r/m32 |
Назначение: | Умножение со знаком |
Процессор: | 8086+ |
Флаги: | Флаги CF и OF сбрасываются в 0, если размер результата умножения получился меньше или равным размеру заданного операнда. В противном случае эти флаги становятся равными 1. Значения флагов SF, ZF, AF и PF не определены. |
Комментарий: | Если размерность операнда составляет 8 бит, то команда IMUL производит умножение содержимого регистра AL на значение операнда и помещает результат в регистр AX. Если операнд - 16-битное слово, команда IMUL производит умножение содержимого регистра AX на значение операнда и помещает результат в пару регистров DX:AX. Если операнд - двойное слово, команда IMUL производит умножение содержимого регистра EAX на значение операнда и помещает результат в пару регистров EDX:EAX. |
Ограничения: | Нет |
Примеры: |
mov al,5 mov bl,3 imul bl ;AX=000Fh |
Команда IMUL (форма 2)
Синтаксис: | IMUL op1,op2,op3 |
Операнды: | op1 - r16, r32 op2 - r/m16, r/m32 op3 - i8, i16, i32 |
Назначение: | Умножение со знаком |
Процессор: | 80186+ |
Флаги: | Флаги CF и OF устанавливается в 1, если результат умножения не вместился в регистр назначения (первый операнд). В противном случае эти флаги сбрасываются в 0. Значения флагов SF, ZF, AF и PF не определены. |
Комментарий: | Команда выполняет умножение второго операнда на третий операнд и помещает результат в первый операнд. |
Ограничения: | Разрядность операндов должна совпадать. Исключением является использование в качестве второго операнда непосредственного 8-битного значения. |
Примеры: |
imul dx,cx,-45 imul ax,[bx],3 |
Команда IMUL (форма 3)
Синтаксис: | IMUL op1,op2 |
Операнды: | op1 - r16, r32 op2 - r/m16, r/m32, i8, i16, i32 |
Назначение: | Умножение со знаком |
Процессор: | 80186+ |
Флаги: | Флаги CF и OF устанавливается в 1, если результат умножения не вместился в регистр назначения (первый операнд). В противном случае эти флаги сбрасываются в 0. Значения флагов SF, ZF, AF и PF не определены. |
Комментарий: | Команда выполняет умножение первого операнда на второй операнд и помещает результат в первый операнд. |
Ограничения: | Разрядность операндов должна совпадать. Исключением является использование в качестве второго операнда непосредственного 8-битного значения. |
Примеры: |
imul dx,cx imul ebx,334 |
Команда MUL
Синтаксис: | MUL op1 |
Операнды: | op1 - r/m8, r/m16, r/m32 |
Назначение: | Умножение без знака |
Процессор: | 8086+ |
Флаги: | Флаги CF и OF сбрасываются в 0, если старшая половина результата равна 0. В противном случае эти флаги устанавливаются в 1. Значения флагов SF, ZF, AF и PF не определены. |
Комментарий: | Если размерность операнда составляет 8 бит, то команда MUL производит беззнаковое умножение содержимого регистра AL на значение операнда и помещает результат в регистр AX. Если операнд - 16-битное слово, команда MUL производит беззнаковое умножение содержимого регистра AX на значение операнда и помещает результат в пару регистров DX:AX. Если операнд - двойное слово, команда MUL производит беззнаковое умножение содержимого регистра EAX на значение операнда и помещает результат в пару регистров EDX:EAX. |
Ограничения: | Нет |
Примеры: |
mov al,45 mov bl,3 mul bl ;AX=0087h |
Комментарии (0)