单片机乘法指令计算步骤求解?

单片机乘法指令计算步骤求解?,第1张

……4Eh×5Dh = 1C56h 啊,你在草稿纸手算一下,或者直接计算器按就行。

十六进制乘法你不熟的话,可以先都转成十进制,用十进制乘法得出乘积,再转成十六进制。

4Eh = 78d,5Dh = 93d

78×93 = 7254d

7254d = 1C56h

好好学习天天向上

单片机乘法指令是MUL AB,只能是累加器A和寄存器B相乘,结果低八位存入A,高八位存入B。

比如题中,A=4EH,B=5DH,A*B=1C56H,所以A=56H,B=1CH

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

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指令,它们的结果是不相同的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12092617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存