aliyes 发表于 2012-1-15 13:39:04

计算的结果差1,请问是什么原因?

本帖最后由 aliyes 于 2012-1-15 13:56 编辑

我的问题有两个,第一是把FFFFH赋值给AX,使用MASM编译时会爆错,反正编译不成功,换成十进制的65535却可以。请高手们解答下

第二个问题,add ax, 的和应该是2F31 但是AX寄存器的值是2F30 最后结果差1。。。
http://www.ouliu.net/r/20120115135533f8l2g.jpg
http://www.ouliu.net/r/201201151357306ubgp.jpg



assume cs:cod
cod segment
ks:mov ax,65535
   mov ds,ax
   mov bx,6
   add ax,
   add ax,
   add ax,
   mov ax,4c00H
   int 21H
cod ends
end ks

小马过河 发表于 2012-1-15 16:50:30

FFFFH 前面加0来没有 十六进制数值的第一位必须为    数字   0ffffh

add ax,    第一步时 ax=0ffffh数据段内存 ffff:6地址的数据为2f31h       ax=0ffffh+2f31h=2f30h 进位给CF

aliyes 发表于 2012-1-15 17:09:38

谢谢小马的解答,明白了。。。。

957591782 发表于 2012-1-16 11:11:27

1楼正解!!!!

seuer126 发表于 2012-1-16 11:47:40

小马过河 发表于 2012-1-15 16:50 static/image/common/back.gif
FFFFH 前面加0来没有 十六进制数值的第一位必须为    数字   0ffffh

add ax,    第一步时 ax=0ffffh数 ...

你这头像是韩国妞吧,我有点hold不住啊

小马过河 发表于 2012-1-16 12:07:34

seuer126 发表于 2012-1-16 11:47 static/image/common/back.gif
你这头像是韩国妞吧,我有点hold不住啊

不要被头像所迷惑
页: [1]
查看完整版本: 计算的结果差1,请问是什么原因?