关于汇编指令中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 位表明的就是操作方向,所以后面的寄存器编码上两个就要互换位置了。