首页前端开发CSSMUL指令(无符号数的乘法指令)

MUL指令(无符号数的乘法指令)

时间2024-05-20 16:32:11发布访客分类CSS浏览47
导读:1.MUL指令(无符号数的乘法指令) 指令格式: MUL OPS ;OPS可以是reg和mem操作数。 被乘数先放在AX或AL、EAX中,再将乘数给OPS。 字节乘法: (AL)*(OPS8)→AX 字乘法: (AX)*(O...

1.MUL指令(无符号数的乘法指令)

指令格式:

MUL OPS 
;OPS可以是reg和mem操作数。

被乘数先放在AX或AL、EAX中,再将乘数给OPS。

字节乘法:
(AL)*(OPS8)→AX 
字乘法: 
(AX)*(OPS16)→DX:AX
双字乘法:
(EAX)*(OPS32)→EDX:EAX
影响的标志位是:
 CF、OF,不影响AF、PF、SF、ZF。

8086乘法运算指令分为无符号数乘MUL和有符号数乘IMUL。

乘法在实现字节相乘时乘积放在AX寄存器中,字相乘时乘积放在DX:AX寄存器中,因此乘法指令不会产生溢出和进位,这时用OF和CF位来表示乘积有效数字的长度。

若乘积的高半部分(字节乘法为AH,字乘法为DX)有效(MUL指令是指AH或DX中的内容不为0,IMUL指令指的则是AH或DX中的内容是否为符号位的扩展),则CF与OF都为1,表示DX或AH中含有乘积的有效数字,否则CF和OF为0。 给你举个例子吧。 无符号数0B4H与11H相乘 mov al,0b4h ; al=b4h=180d(被乘数放在al中) mov bl,11h ; bl=11h=17d(乘数放在bl中) mul bl ; ax=Obf4h=3060d,OF=CF=1(乘积放在ax中。AX高8位不为0) 再来一个有符号数乘法的例子。 有符号数0B4H与11H相乘 mov al,0b4h ; al=b4h=-76d(b4h为-76的补码) mov bl,11h ; bl=11h=17d imul bl ; ax=faf4h=-1292d,OF=CF=1 ; AX高8位不是低8位的符号扩展,表示含有有效数字,计算二进制数乘法:b4h×11h。如果把它当作无符号数,用MUL指令结果为0bf4h;如果看作是有符号数,用IMUL指令则结果为faf4h。

由此可见,同样的二进制数看作无符号数与有符号数相乘,即采用MUL与IMUL指令,它们的结果是不相同的。

例:

设(AL)=02H(2),
(BH)=81H(129),
(AL)*(BH)→AX,
执行MUL BH指令后,(AX)=02H*81H=0102H。
(258)十进制

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: MUL指令(无符号数的乘法指令)
本文地址: https://pptw.com/jishu/664269.html
编程最好课程是什么 主机那个好,主机选择有哪些注意点

游客 回复需填写必要信息