zhanshengkui 发表于 2011-11-25 11:36:43

学习中,卡在标志寄存器这里了,请老师们指点迷山哈~!~

可以举个例说明一下,到底什么才是无符号数和有符号数!困扰在这两个东东上面了,脑袋一片浆糊!

cfer 发表于 2011-11-25 11:57:28

比如8位二进制数,如果这8位都表示数值大小,那就是无符号数,如果用最高位的0或1表示符号的话,那就是有符号数,我们约定用0表示正数,用1表示负数。所以8位无符号二进制数表示的数值范围是0到255,8位有符号二进制数表示的范围是-128到+127.负数用补码表示,原码的符号位不变其余各位取反后再加一就得到了负数的补码,正数原码反码补码相同。

ever.g 发表于 2011-11-25 12:21:15

本帖最后由 ever.g 于 2011-11-25 12:36 编辑

根据上面的
比如F6 表示有符号数就是十进制的-10,无符号数就是十进制的246

无论如何在内存中都是F6所代表的8位二进制数来表示的
具体怎么用,看程序员怎么考虑的

比如做加法时F6+1 = F7   1.当作无符号运算结果为247
2.有符号运算结果为F7的补码-9

但是内存中保存的结果只是F7所表示的8位二进制数,然后这个结果你怎么用 是自己的事了。考虑不考虑标志寄存器的符号位,进位溢出神马的,这些怎么利用就看你了


关于补码去看视频或者课本吧。。





zhanshengkui 发表于 2011-11-25 14:01:19

把我理解的11.2答案贴出来一下!对于有符号数和无符号数通过几位的讲解,我就是这样理解地
sub al,al                无符号数,有符号数al=0
cf=0 of=0 sf=0 zf=1 pf=1
mov al,10H
cf=0 of=0 sf=0 zf=1 pf=1
add al,90H                无符号数al=a0H=160d 无借位。 有符号数al=16+(-112)=96 无溢出
cf=0 of=0 sf=1 zf=0 pf=1
mov al,80H
cf=0 of=0 sf=1 zf=0 pf=1
add al,80H      无符号数al=100H=256d=100000000H 有借位。有符号数al=-80-80=-160 有溢出
cf=1 of=1 sf=0 zf=1 pf=1
mov al,0fcH
cf=1 of=1 sf=0 zf=1 pf=1
add al,05H       无符号数al=101H=257d=100000001H 有借位。有符号数al=-4+5=-1 无溢出
cf=1 of=0 sf=0 zf=0 pf=0
mov al,7dH
cf=1 of=0 sf=0 zf=0 pf=0
add al 0bH      无符号数al=88H=136d=10001000H 无借位。有符号数al=88H=136d 有溢出
cf=0 of=0 sf=1 zf=0 pf=1
无符号数的范围是0-255,有符号数的范围是-128-127
页: [1]
查看完整版本: 学习中,卡在标志寄存器这里了,请老师们指点迷山哈~!~