+ -
当前位置:首页 → 问答吧 → mov eax,0 、mov eax,[0]区别

mov eax,0 、mov eax,[0]区别

时间:2011-10-31

来源:互联网

mov eax,0
mov eax,[0]
mov eax,dword ptr[0]

这几条语句,反汇编后机器码为什么都是 B8 00 00 00 00?
按我的理解,第一条是立即数寻址,这是正常的。第二条是直接寻址,可是反汇编后怎么不是 mov eax,dword ptr ds:[0] 呢??? 第三条和第二条应该是一样的取[0]偏移的位置内容,可是仍然还是和mov eax,0的机器指令一样,这是什么原因?

在debug中测试,mov ax,[0]是读取ds:[0]内存的值,为什么32位的编译器产生的结果不同呢?

作者: liuyu60305002   发布时间: 2011-10-31

因为MASM不允许
mov 寄存器,[立即数]这种语法
它会将这样的语句识别为
mov 寄存器,立即数

作者: Areslee   发布时间: 2011-10-31