编程论坛
注册
登录
编程论坛
→
汇编论坛
新手问题!~~~~~~~~~~
nzxhust
发布于 2008-10-11 15:20, 911 次点击
CBW和CWD进行扩展时为什么在最高有效位不同时扩展不一样啊0扩展为0,1扩展为0FF和0FFFF是为什么怎么不都扩展为0啊还问下最高有效位是不是就是最高位啊?谁回答下详细点我才学的.
2 回复
#2
zklhp
2008-10-11 18:05
[bo][un]nzxhust[/un] 在 2008-10-11 15:20 的发言:[/bo]
CBW和CWD进行扩展时为什么在最高有效位不同时扩展不一样啊0扩展为0,1扩展为0FF和0FFFF是为什么怎么不都扩展为0啊还问下最高有效位是不是就是最高位啊?谁回答下详细点我才学的.
CBW是把AL中字节的符号扩展到AH中去
CWD是把AX中的字的符号扩展到DX中去
偶也不明白啥是最高有效位……
#3
ONEPROBLEM
2008-10-12 13:55
这方面我不大懂,但想说说个人的一点看法:
1.最高有效位并不等于最高位;最高有效位是对无符号数而言的,在无符号数中,最高位就是最高有效位,而在有符号数中,有最高位但没有最高有效位,因为最高位是用来表示正负值的.
2.CBW 和 CWD 都是符号扩展的指令.注意:是符号扩展,不是零扩展!在有符号数中,最高位要么是零(正数),要么是1(负数);这两个指令的作用就是,要么扩展零(如果是正数的话),要么扩展1(如果是负数的话).
例:执行:
mov al,7f
cbw
mov al,8f
cbw
第一次cbw,AH中是0,因为第一次扩展的是正数,它的最高位为0;
第二次cbw,AH中是FF,因为第二次扩展的是负数,它的最高位为1;
其它类推.
1