natrium11 2001年08月15日
加精
------------------BC31编译的代码为何总使用IMUL?---------------------
有代码 unsigned b1=40000;
unsigned c1=40000;
long d1=b1*c1;
编译得到
;
; unsigned b1=40000;
;
fwait
mov word ptr [bp-46],-25536
;
; unsigned c1=40000;
;
mov word ptr [bp-48],-25536
;
; long d1=b1*c1;
;
mov ax,word ptr [bp-46]
imul word ptr [bp-48]
mov word ptr [bp-50],0
mov word ptr [bp-52],ax

明明是无符号数乘法,为何使用IMUL?这样能得到正确答案吗?
难道40000*40000==-25536*(-25536)??

另外,在汇编中的立即数是否都按带符号数识别?
写 MOV AX,40000 行吗?

多谢指教!!
...全文
88 点赞 收藏 9
写回复
9 条回复

还没有回复,快来抢沙发~

发动态
发帖子
汇编语言
创建于2007-08-27

1.9w+

社区成员

4.1w+

社区内容

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区公告
暂无公告