用debug测试
1111111B+1B=10000000B此时SF=0说明不是根据结果的最高位判断的,
22H-0A0H=82H此时SF=1
为啥??
用debug测试
1111111B+1B=10000000B此时SF=0说明不是根据结果的最高位判断的,
22H-0A0H=82H此时SF=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