请输入您要查询的百科知识:

 

词条 IMUL
释义

汇编指令

imul 有符号乘法,将被乘数与乘数均作为有符号数。

mul 无符号乘法,将被乘数及乘数均作为无符号数。

可以有三个操作数:imul eax,eax,0Ch

第3操作数是乘数,

第2操作数是被乘数,

运算结果放入第1操作数。

执行操作

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 * 立即数双字

根据操作数的数量,此指令有三种形式。

单操作数形式

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

双操作数形式

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

三操作数形式

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

说明

将立即数用作操作数时,它按照符号扩展方式扩展到目标操作数格式的长度。

标志位影响

有效位进位到结果的上半部分时,CF 与 OF 标志设置为 1。结果正好可以存储到结果的下半部分时,清除 CF 与 OF 标志。

无论操作数是否有符号,乘积的下半部分都相同,所以双操作数与三操作数形式也可以使用无符号操作数。不过,此时不能使用 CF 与 OF 标志确定结果的上半部分是否非零。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/25 23:13:41