由于最近在研究如何把汇编语言转成机器码,现在大概了解了方法,于是随便找了个程序,
用od反汇编了一下,得到如下指令:
004073C9 |> \8B45 F8 |mov eax,dword ptr ss:[ebp-8]
004073CC |. 25 FF000000 |and eax,0FF
004073D1 |. 8B0D A0524300 |mov ecx,dword ptr ds:[4352A0]
004073D7 |. 33D2 |xor edx,edx
004073D9 |. 66:8B1441 |mov dx,word ptr ds:[ecx+eax*2]
004073DD |. 81E2 03010000 |and edx,103
004073E3 |. 8955 E0 |mov dword ptr ss:[ebp-20],edx
004073E6 |> 837D E0 00 |cmp dword ptr ss:[ebp-20],0
其中的004073D9这行, 机器码是66:8B1441,请问66:是什么意思,怎么来的. 其他代码都可以插手册一一对应的,就这个66:不知道什么意思.
很蛋疼的问题,希望知道的老大指点一下,呵呵.
------解决方案--------------------------------------------------------
66h- Operand-size override prefix is encoded using 66H (66H is also used as a
mandatory prefix for some instructions).
影响立即操作数和寄存器操作数的位数。
比如32位(D=1)中,dx,edx 的ModRM相同,为了区别,加前缀66h 指定为dx 16位寄存器操作数。
- Assembly code
use3200000000: 66 8B 14 41 mov dx,[ecx+eax*2]00000004: 8B 14 41 mov edx,[ecx+eax*2]