(AL)=6CH, (AL)=6CH,
ADD AL,70H 结果是0DCH SUB AL,70H 结果是0FCH
CF=1
SF=1 结果的0含义?
ZF=0
溢出也是1,为什么结果是负数?
(AL)=6CH, (AL)=6CH,
ADD AL,70H 结果是0DCH SUB AL,70H 结果是0FCH
CF=1
SF=1 结果的0含义?
ZF=0
溢出也是1,为什么结果是负数?
SF是符号标志位,1时为负,0时为正
sub运算其实是由add来实现的a-b=a+(-b),所以6cH-70H=6c+(-70H)转换成补码运算,相加会有溢出所以OF=1;但6cH<70H所以SF为1,结果为负。
0DCH 这个“0”并不是表示‘+’,运算结果的正负由SF是符号标志位表示,这只是16进制的一种写法和70H和070H是一样的(al)只管后面8位
应该是:
因为cf是进位标志,当运算结果使最高位产生进位或退位时cf=1,否则=0.
SF是符号标志位,当1时为负,0时为正。而且sub运算其实是由add来实现的a-b=a+(-b),所以6cH-70H=6c+(-70H)转换成补码运算,相加会有溢出所以OF=1;但6cH<70H所以SF为1,结果为负。
SUB AL,70H
等效于AL=AL-70H
由于AL>70H 所以是负数啊。