博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

CF的含义

Posted on 2006-08-04 09:23  晓平  阅读(992)  评论(0)    收藏  举报
CF表示无符号数的溢出,OF表示带符号数的溢出。 
  加法中CF表示最高有效位有无向高位进位,有进CF=1,无进CF=0; 
  减法中CF表示最高有效位有无向高位借位,有借CF=1,无借CF=0。sub  3,4  后,cf的值为1, 
  字操作时的15位或字节操作时的第7位)产生一个进位或借位时,cf被置1无论怎么说来说去,总的原则只有两条: 
   
  第一:操作数没有明确到底是有符号数还是无符号数,你认为它是什么就是什么。 
  比如:a2可以是无符号数吧,大于128了,也可以是有符号数吧,就是个负数了。。。。 
   
  第二:处理器对两个操作数进行运算时,按照无符号数求得结果。  这只是处理器的处理方式。 
   
   
   
   
  计算结果被舍掉一位有两种情况,结果对,结果错 
   
  错的叫溢出,对的叫进位 
   
  加法的溢出有两种情况,如果是减法也差不多 
  两个正数相加  4f+5f变成一个负数了,溢出 
  两个负数相加  af+af变成一个正数了,溢出 
   
  进位,NND有点阴险,进了位被舍掉一位数据还正确,靠! 


MOV AL, 01H
MOV BL, 80H
SUB AL, BL
做完之后OF, CF都被置位了。据我所知,减法是用补码当加法做的,80H的补码就是其本身,可是最后一句换成ADD AL,BL的话OF,CF就被清除了。所以想请问一下减法实现以及OF,CF设置的内部机制。



MOV AL, 01H
MOV BL, 80H
SUB AL, BL
= 1 - (-128)
MOV AL, 01H
MOV BL, 80H
ADD AL,BL
= 1 + (-128)



是的,第一个的OF还好理解,因为超出了有符号数的表示范围,关键是CF不好理解,所以想问一下这个减法是怎么完成的。



01h - 80h 有借位, cf置1



那可不可以这样理解: 做减法时先看原码,如有借位则CF置1,再变成补码做加法.


也可以这样理解