首页
社区
课程
招聘
[求助]OF标志的问题。。
发表于: 2008-11-24 11:50 3421

[求助]OF标志的问题。。

2008-11-24 11:50
3421
mov al,7dh  
add al,0bh   of=1  sf=1 cf=0

为什么   add al,0bh 运算之后
OF=1
SF=1
CF=0
7DH 十进后又没有超过-128~127 所以不用取反+1 自然就不会有补码
BH  一样是不会有补码
7DH不会是-3 吧
BH不会是-5 吧
但-3+-5也不会超过-128~127啊 晕了 请高手指教

再但FCH+BH明显就是=107H 进位了 但却CF=0

至于SF为什么是负数我也不是很清楚

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
mov al,7dh  
add al,0bh
-----------------
结果,al = 88h = 10001000

所以,SF = 1

OF 是个符号数运算标志,CF 是个无符号数运算标志。

对符号数来说是溢出了,对无符号数来说是没有溢出

所以,OF = 1, CF = 0
2008-11-24 12:30
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
你对补码的概念和CPU标志位具体表达的含义理解有误。

0x7D == 125
0x0B = =11

相加为0x88

0x88的最高位为1,因此SF==1

0x88并没有向高位进位,所以CF == 0

0x88在8位有符号数中是负数,发生了溢出,OF==1;

0x88不为0,因此ZF == 0;
2008-11-24 12:36
0
雪    币: 18
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
但SF是有符号运数才影响啊.
88是正数啊 非负则0 难道书说的都错?
2008-11-26 01:20
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
5
你大致没有看清楚书上说的.可以回头查查。
al 的最高位是 符号位 对有符号运算来说。
1000 0000 表示是个-0 而不是80
也就说 88 是1000 1000 是-08 而不是 88

CF 根据最高有效位是否有进(借)位设置的:有进(借)位时CF=1, 无进(借)位时CF=0.
OF 根据操作数的符号及其变化来设置的:若两个操作数的符号相同,而结果的符号与之相反时OF=1, 否则为0.
ZF 根据结果来设置:不等于0时ZF=0, 等于0时ZF=1
SF 根据结果的最高位来设置:最高位为0, 则SF=0.
AF 根据相加时D3是否向D4进(借)位来设置:有进(借)位时AF=1, 无进(借)位时AF=0
PF 根据结果的1的个数时否为奇数来设置:1的个数为奇数时PF=0, 为偶数时PF=1

crtl+v 的一段话,自己看看 这个 add 对标志位的影响............
2008-11-26 08:29
0
游客
登录 | 注册 方可回帖
返回
//