鱼C论坛

 找回密码
 立即注册
查看: 1566|回复: 2

[技术交流] 王爽书上关于SF 的一个问题

[复制链接]
发表于 2014-12-26 07:04:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 b232wang 于 2014-12-26 07:24 编辑

在书中第215页 讲解SF的时候
书中说:
"SF 标志,就是CPU对于有符号运算结果的一种记录,它记录数据的的正负。在我们将数据当作有符号数来运算的时候,可以通过它来得知结果的正负。"
我不知道你们怎么理解这句话的
我当时做了一个测试
al = 100 (64h)
ah = -100(9ch)
即ax = 9c64
sub al,ah
在我们将数据当做有符号数来运算时:
al是100 ah是-100
得到的结果是200 为正数
但是 计算后 SF的结果为NG 即1
SF为1 表示结果为负
和王爽老师书中所写不符

所以我推断
SF是单纯把结果当做有符号(和OF不同,并不关心相减的两个数,只看结果)
然后判断结果为正还是为负
简单的说 把结果转2进制 看最高位是否为1
若为1 则SF为1  --- NG
若为0 则SF为0  --- PL这样的话 sub al,ah
结果为200
即 11001000b
最高位为1
所以SF是NG(即1)

不知道我这样理解是否正确
求大神指点


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-12-26 07:23:41 | 显示全部楼层
对比一下SF和OF的不同
上面讲了SF只看结果
但OF却只看过程

1)
mov al,9c
mov bl,64
sub al,bl
结果 al为38 OF为OV 即1 = 溢出
2)
mov al,39
mov bl,1
sub al,1
结果 al为38 OF为NV 即0 = 未溢出

比较1和2 减法后结果都为 38H 但1)溢出 2)未溢出
得出 OF只看中过程
将两个数看成有符号 然后相减
如果得出的差 不在阈值内(8位 即 [-128,127])则 判定溢出
如果在阈值内 则 未溢出
如1)al 为 9cH 变有符号 并转十进制则是 -100
bl 为 64  变有符号 并转十进制则是 100
sub al,bl ( -100 - 100)
结果为-200
8位十六进制为 38
但因为计算结果 小于 -128
所以判定为 溢出
OF为1 即OV


王爽老师OF讲的还是很详细的 在此只是拿来和SF做一下比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-26 07:35:06 | 显示全部楼层
好吧 小甲鱼在057的视频里说道这个问题了。。。当时还没看到这里 无视我吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 18:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表