1. 从箭头指向处我们可以得出 MOV Ev ,Gv。MOV表明是操作码MOV。现在对Ev,Gv进行查找。
2.对Ev,Gv进行分析。
E A ModR/M byte follows the opcode and specifies the operand. The operand is either a general-purpose register or a memory address. If it is a memory address, the address is computed from a segment register and any of the following values: a base register, an index register, a scaling factor, a displacement.
一个ModR/M字节紧接着操作码并制定操作数。该操作数可能是通用寄存器或者是内存地址。如果它是一个内存地址,这个地址计算源于段寄存器和下列的值:基本寄存器 索引寄存器 比例因子 移位。
G The reg field of the ModR/M byte selects a general register (for example, AX (000)).
ModR/M字节的注册表字段选择一个通用寄存器(比如 AX(000))
通俗易懂的方式讲,E表示操作数可以是寄存器或者内存地址;G表示操作数只能是寄存器。
再来看v
v Word, doubleword or quadword (in 64-bit mode), depending on operand-size attribute.
根据操作数大小决定是word Dword 或 quadword大小。
3. 对ModR/M进行解析。E的首句“A ModR/M byte follows the opcode and specifies the operand”表明在操作码后一字节的地方是ModR/M选项。出现E G的操作码后边一定跟着ModR/M。这里的ModR/M选项对应的值为C1。我们接下来看一个新表 Table 2-2. 32-Bit Addressing Forms with the ModR/M Byte