王爽书上关于SF 的一个问题
本帖最后由 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)
不知道我这样理解是否正确
求大神指点
对比一下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做一下比较 好吧 小甲鱼在057的视频里说道这个问题了。。。当时还没看到这里 无视我吧
页:
[1]