词条 | 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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。