主题:符号标志的问题
13
[专家分:210] 发布于 2006-07-20 15:52:00
val2 word 8000h
add val2 1
运行以上代码,为什么符号标志是 1
书上说在算术运算结果为负时,符号标志被设置
所以我觉的是零
回复列表 (共5个回复)
沙发
peimichael [专家分:300] 发布于 2006-07-20 21:32:00
没错阿,计算结果是个负数,所以SF置1啊
板凳
peimichael [专家分:300] 发布于 2006-07-20 21:33:00
被设置是置1不是清零
3 楼
13 [专家分:210] 发布于 2006-07-23 09:33:00
word 是无符号类型, 加一为什么是负数?
加一后是 1000 0000 0000 0001, 这算负数还是无符号数?
4 楼
peimichael [专家分:300] 发布于 2006-07-23 14:26:00
还是有无符号数的区别问题
学汇编要树立这样一个概念
不管指令还是数据,有符号数还是无符号数
在内存里都是一样的,至于计算机把他当什么东西来操作完全在于程序员的控制。
转一贴过来说明一下:
有符号还是无符号数但从内存内容上根本看不出来
就是看使用着怎么用
比如内存里面有个0ffh,
你把他当无符号数用它就是255(此时最高位也作为数字),
当有符号用就是-1(此时最高位为符号位,以0ffh为补码求原码)
至于有符号指令比如movsx你使用这种指令说明你已经将操作数当作有符号数在用
最高位就作为符号位
你在做加法的时候,计算机既会把它当作无符号数来置CF和AF,同时又会把它当作有符号数来置OF和SF
1000 0000 0000 0001当有符号数看他就是负数-7FFFH(最高位符号位为1),
当无符号数看他就是8001H
5 楼
13 [专家分:210] 发布于 2006-07-23 15:10:00
辛苦了.
我来回复