汇编的一条指令解释

来源:百度知道 编辑:UC知道 时间:2024/04/30 03:08:03
move ax,20000后
AX是什么值
AX只是一个16位寄存器,但2,0000却超出了16位,20000这个操作数不是应该是16进制的吗?

十进制表示,AX=20000
十六进制表示,AX=4E20

补充回答:
原来楼主是把这个20000默认为十六进制数。
在Intel系列汇编语言中,对于数值数据,都是默认为十进制。所以,我认为指令中的20000是十进制数,相信其他几位回答者也是这么认为的。若是十六进制数,应该用“mov ax,20000H”表示。我们学会编、用汇编,当然就应该遵守它的规定。
另外,当时回答这个问题的时候,确实没注意到“move”,一打眼,就当是“mov”指令。
下面把指令中的20000作为十六进制数。若是汇编源代码,这条指令不会通过编译,因为20000超出了16位寄存器能够表示的范围;若在DEBUG中用“A”命令直接输入这个指令,DEBUG会提示:错误。

move 为数据传送指令,这条指令呢就是把源操作数20000的值传送给ax。注意哦,这是立即寻址方式,源操作数20000直接放在指令中,称为立即数!
O(∩_∩)O~
所以不用怀疑,AX的值是20000(十进制)!

就是20000→AX
完了后
AX=2000(十进制)=4E20(十六进制)=0100 1110 0010 0000(二进制)

就是20000

mov的概念就是:
mov a,b
a就是一个变量,这条指令运行后a=b

没听说过有move这条指令
难道是mov eax,20000

题意估计是这样的 mov eax,20000h
然后其实ax就是eax的后16位
也就是说ax的值为0