鱼C论坛

 找回密码
 立即注册
查看: 3178|回复: 1

标志寄存器SF还有二进制正负数补码的加减速的一些问题

[复制链接]
发表于 2017-2-6 20:53:21 | 显示全部楼层 |阅读模式

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

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

x
看图

这为什么说“CPU在执行add等指令时,是必然要影响到SF标志位的值的”?一定会影响吗?

如果是这样:

mov al,00000001B
add al,00000001B
复制代码


我把它们都看成是无符号的,那么相加后的值是一个正数,所以SF标志位的值为1
再如果:

mov al,00000002B
add al,00000002B
复制代码


都看成无符号的,相加后的值是正数,SF标志位的值还是1,没有改变啊,为什么说影响到了SF的值?

还有图里我标出来的“表示”是什么意思?

还有,把10000001B看成无符号数进行运算,就是我们平常用汇编进行的运算,比如:

mov ax,10000001B        ;ax=129
mov bx,10000011B        ;bx=131
add bx,ax                       ;bx=260

如果我们要把10000001B看成有符号数进行运算,把10000011B看成无符号的呢?那么

mov ax,10000001B        ;ax=-1
mov bx,10000011B        ;bx=131
add bx,ax                       ;bx=130

执行后
bx=10000100B=130,难道10000100B=130吗?

如果我把10000001B看成有符号数,把10000011B也看成有符号数,那么

mov ax,10000001B        ;ax=-1
mov bx,10000011B        ;bx=-3
add bx,ax                       ;bx=-4

执行后
bx=10000100B=-4,10000100B还可以于-4吗???

我始终搞不明白这个补码,我知道算出补码,但我不知道用补码进行运算,因为一般说了补码,就有负数,真的搞不懂

还有图里那个“表示”是什么意思???
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-7 00:45:17 | 显示全部楼层
举个例子  :

mov ax ,1

sub ax ,2

此时的ax值为FFFF  那么 SF 1(NG)

看法 1.你可以单独看ax忽略SF的值 那么此时的 ax就是为正数的FFFF

看法2.你也可以把SF 和 ax联合起来一起看 , 那么此时的 ax 就是 -FFFF了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 14:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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