回 帖 发 新 帖 刷新版面

主题:符号标志的问题

val2 word 8000h
     add val2  1
运行以上代码,为什么符号标志是 1

书上说在算术运算结果为负时,符号标志被设置
所以我觉的是零

回复列表 (共5个回复)

沙发

没错阿,计算结果是个负数,所以SF置1啊

板凳

被设置是置1不是清零

3 楼

word 是无符号类型, 加一为什么是负数?
加一后是  1000 0000 0000 0001, 这算负数还是无符号数?

4 楼

还是有无符号数的区别问题
学汇编要树立这样一个概念
不管指令还是数据,有符号数还是无符号数
在内存里都是一样的,至于计算机把他当什么东西来操作完全在于程序员的控制。

转一贴过来说明一下:
有符号还是无符号数但从内存内容上根本看不出来
就是看使用着怎么用
比如内存里面有个0ffh,
你把他当无符号数用它就是255(此时最高位也作为数字),
当有符号用就是-1(此时最高位为符号位,以0ffh为补码求原码)
至于有符号指令比如movsx你使用这种指令说明你已经将操作数当作有符号数在用
最高位就作为符号位

你在做加法的时候,计算机既会把它当作无符号数来置CF和AF,同时又会把它当作有符号数来置OF和SF

1000 0000 0000 0001当有符号数看他就是负数-7FFFH(最高位符号位为1),
当无符号数看他就是8001H

5 楼

辛苦了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册