注册 登录
编程论坛 汇编论坛

新手的一个简单问题

kpl 发布于 2008-04-09 17:22, 1484 次点击
MOV AL,5
CBW      ;执行结果为(AX)=0005H
MOV AL,98h
CBW      ;执行结果为(AX)=0FF98

现在我要问的是,为什么第二行执行了CBW后,(AH)=00,而第四行执行CBW后,(AH)=0FF,这是为什么啊?
5 回复
#2
woami662008-04-09 18:33
CBW指令是将AL的最高位的二进制数扩展到AH上去,所以AH中是00H还是0FFH,取决于AL的最高位,第一种情况AL的最高位是0,所以AH是00H,第二种情况AL的最高位是1,所以AH中为0FFH
#3
tjutzy2008-04-10 16:53
回复 1# 的帖子
2楼正解。
#4
xj62com2008-06-28 15:00
我想问的是  0FF98H
其中0 存放在哪里  AX不是放不下吗?
#5
梁志坤2008-07-04 00:32
在书写时,为了区别,在数据后面紧跟一个字母H。当十六进制数的第一个字符是字母时,在第一个字符之前必须添加一个‘0’。如:100H、56EFH、0FFH、0ABCDH等都是十六进制数。其中的0只是一个标号本身并没有什么意义
#6
木又寸头2008-07-07 23:33
呵呵,知道点常识了,我说怎么有些十六进制数的前面老有0呢,原来是这样

学习,学习
1