当前位置: 代码迷 >> 汇编语言 >> 关于汇编指令中mov 89和8B的有关问题
  详细解决方案

关于汇编指令中mov 89和8B的有关问题

热度:299   发布时间:2016-05-02 04:54:41.0
关于汇编指令中mov 89和8B的问题。
X86汇编指令中
mov ebx,eax有几种格式
89C3和8BD8
看雪上的帖子给的解释是
88    /r     MOV r/m8,r8             Move 
89    /r     MOV r/m32,r32           Move 
8A    /r     MOV r8,r/m8             Move 
8B    /r     MOV r32,r/m32           Move 
搞不懂一个mov ebx,eax怎么有这么多格式

还有机器码的第二位应该是涉及寄存器的。
C3的2进制是:11000011
D8的2进制是:11011000
前2位是Mod,这个已经在Inter手册上看到过了
后6位我的理解是分为两段,每一段代表一个寄存器,eax是000;ebx是011
为什么8B的mov 后面的操作数里的寄存器是反的的?

------解决方案--------------------
不要纠结,指令编码有交集而已。
------解决方案--------------------
89 和 8B 就是 MOV 指令操作码域里 d 位的差异,d 位表明的就是操作方向,所以后面的寄存器编码上两个就要互换位置了。
  相关解决方案