IMUL

编辑:脉脉网互动百科 时间:2020-01-25 07:36:49
编辑 锁定
本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
立即数用作操作数时,它按照符号扩展方式扩展到目标操作数格式的长度。
中文名
IMUL
外文名
IMUL
特    征
符号乘法
作    用
将被乘数与乘数均作为有符号数
操作数
单双操作数等

IMUL基本信息

编辑
imul 有符号乘法,将被乘数与乘数均作为有符号数
mul 无符号乘法,将被乘数及乘数均作为无符号数。
可以有三个操作数:imul eax,eax,0Ch
第3操作数是乘数,
第2操作数是被乘数,
运算结果放入第1操作数。

IMUL其他信息

编辑
IMUL al,r/m8 : AX <= AL * r/m
IMUL ax,r/m16 : DX:AX <= AX * r/m
IMUL eax,r/m32 : EDX:EAX <= EAX * r/m
IMUL r16,r/m16 : 字寄存器 <= 字寄存器 * r/m
IMUL r32,r/m32 : 双字寄存器 <= 双字寄存器 * r/m 双字
IMUL r16,r/m16,imm8 : 字寄存器 <= r/m16 * 符号扩展的立即数字节
IMUL r32,r/m32,imm8 : 双字寄存器 r/m32 * 符号扩展的立即数字节
IMUL r16,imm8 : 字寄存器 <= 字寄存器 * 符号扩展的立即数字节
IMUL r32,imm8 : 双字寄存器 <= 双字寄存器 * 符号扩展的立即数字节
IMUL r16,r/m16,imm16 : 字寄存器 <= r/m16 * 立即数字
IMUL r32,r/m32,imm32 : 双字寄存器 <= r/m32 * 立即数双字
IMUL r16,imm16 : 字寄存器 <= r/m16 * 立即数字
IMUL r32,imm32 : 双字寄存器 <= r/m32 * 立即数双字
根据操作数的数量,此指令有三种形式。

IMUL操作数

编辑

IMUL单操作数

此形式与 MUL 指令使用的形式完全相同。这里,源操作数(位于通用寄存器或内存位置)乘以 AL、AX 或 EAX 寄存器(取决于操作数大小)中的值,乘积分别存储到 AX、DX:AX 或 EDX:EAX 寄存器。

IMUL双操作数

对于此种形式,目标操作数(第一个操作数)乘以源操作数(第二个操作数)。目标操作数是通用寄存器,源操作数可以是立即数、通用寄存器或内存位置。乘积随后存储到目标操作数位置。

IMUL三操作数

此种形式需要一个目标操作数(第一个操作数)与两个源操作数(第二个与第三个操作数)。这里,第一个源操作数(可以是通用寄存器或内存位置)乘以第二个源操作数(立即数)。乘积随后存储到目标操作数(通用寄存器)。

IMUL标志影响

编辑
有效位进位到结果的上半部分时,CF 与 OF 标志设置为 1。结果正好可以存储到结果的下半部分时,清除 CF 与 OF 标志。
无论操作数是否有符号,乘积的下半部分都相同,所以双操作数与三操作数形式也可以使用无符号操作数。不过,此时不能使用 CF 与 OF 标志确定结果的上半部分是否非零。
词条标签:
计算机学