请问CPU如何判断计算后SF标志位0或1

2019-04-22 21:57发布

用debug测试

1111111B+1B=10000000B此时SF=0说明不是根据结果的最高位判断的,

22H-0A0H=82H此时SF=1

为啥??

1条回答

符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

但你要了解,不同CPU步长不同,代表负数的补码位数也是不同的

1111111B+1B=10000000B

你这个若是8位的,它就是负数了

所以主要要看你运算的位数

你若用

mov al,7f

add al,1

结果AL=80,且SF就是1

(不知你怎么得到SF=0的)

(NG表示SF=1为负)

而对22H-0A0H,若是8位的,结果不是82,是负数,所以也是SF=1


一周热门 更多>