注册 登录
编程论坛 汇编论坛

汇编中加法指令结果分析有疑问,请指教!

潞潼 发布于 2006-10-28 18:56, 1137 次点击

大家好!我是汇编初学者,请教各位高人一个问题!
假定 (AL)=0E3H,(psw)=0000H
执行 ADD AL,160 指令
(AL)=11100011
+160D=A0H=10100000
-------------------------------------
自然丢失-110000011
执行指令后的状态信息:
若是无符号数加法运算,(AL)=E3H+A0H,CY=1,运算结果为:183H=387D,即是227D+160D=387D,无溢出.
若是有符号数加法运算,(AL)=[E3H]补=-29D,[A0H]补=-96D,运算结果为[83H]补=-125D,
(-29D)+(-96D)=-125D,运算结果大于-128D,则无溢出OF=0
我的问题:这里假定的如果是无符号数为什么就算进位1,有符号数结果就不用算进位?还有无符号数的溢出如何判断?

4 回复
#2
菜鸟上路2006-10-29 10:20
其实LZ不必考虑那么多的,写程序时只要用JA,JG,JNA,JNG......判断就可以了.如果想具体了解,可以看下计算机组成原理.
#3
wchx2152006-10-29 18:11

其实C与O是无关的,C只与无符号数计算有关,O只与有符号数计算有关。
执行add时,计算机自动按两种方式计算,你只需选用有关的一种就行了。
其中JA,JB是按无符号数计算判断的,JG,JL是按有符号数计算判断的。

#4
火奴2006-10-29 19:45
汇编里面,只有无符号运算CF才有效,
只有有符号运算OF才有效。
AL 是8位二进制的 所以他最多能存放的无符号数是FFFFFFFFB=0FFH,你用加法运算时,目的操作数大于0FFH的话,CF就会被设置了。
有符号运算,目的操作数只要结果超出-128--127,OF就会被设置了
#5
潞潼2006-11-03 14:56
谢谢各位热心帮助!
1