我对CF 和 OF的认识,求指点

DontKissBossAss 2012-09-06 03:35:38
1: CF 进位标志, MBS 向高位的进位值 低位向MSB的进位值

如: 如下代码低位向MBS的进位值为1, MBS向高位的进位值为1. 两者执行或运算,CF = 1
mov al, 0ffh
add al, 1h


但是如下代码,CF = 1 就不明白怎么回事了。
mov al, 9h
neg al


2: OF:溢出标志: 向MBS的进位值。

如:

mov     al, 7fh
add al, 7fh;
...全文
44 点赞 收藏 5
写回复
5 条回复
DontKissBossAss 2012年09月11日
[Quote=引用 3 楼 的回复:]

OF 标记位,简单地说就是加法运算时,两正数加出了个负数,或两负数加成了个正数,这些都是错误的结果,溢出了,OF=1 。从判定规则上来说,就是次最高位是否向最高位产生进位如果和最高位是否向上产生进位不一致的话,OF=1 ;若两个进位状态一致,则 OF=0 。
[/Quote]

谢谢帮助。 结贴。
回复 点赞
均陵鼠侠 2012年09月10日
《汇编语言:从实模式到保护模式》一书。
回复 点赞
zara 2012年09月10日
OF 标记位,简单地说就是加法运算时,两正数加出了个负数,或两负数加成了个正数,这些都是错误的结果,溢出了,OF=1 。从判定规则上来说,就是次最高位是否向最高位产生进位如果和最高位是否向上产生进位不一致的话,OF=1 ;若两个进位状态一致,则 OF=0 。
回复 点赞
DontKissBossAss 2012年09月06日
[Quote=引用 1 楼 的回复:]

那些只是个大致规则的描述,具体到实际的指令可能有其独特的规定,就如 neg 指令,其对 CF 的影响规则就是:操作数为 0 则 CF=0 否则 CF=1 。其实落实到算术上来看的话,也对;求负数就是 0-x ,只要 x!=0 那总是要产生借位的,故而 CF=1 了。
[/Quote]

谢谢指点,我看完intel5,在自己练习的时候, 发现neg 跟我预想的不一样, 因此就由此一问, 那么我描述的OF 正确么?
不知道有没有啥特别的。
回复 点赞
zara 2012年09月06日
那些只是个大致规则的描述,具体到实际的指令可能有其独特的规定,就如 neg 指令,其对 CF 的影响规则就是:操作数为 0 则 CF=0 否则 CF=1 。其实落实到算术上来看的话,也对;求负数就是 0-x ,只要 x!=0 那总是要产生借位的,故而 CF=1 了。
回复 点赞
发动态
发帖子
汇编语言
创建于2007-08-27

1.9w+

社区成员

4.1w+

社区内容

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区公告
暂无公告