- “[]”内放立即数
mov eax,dword ptr [00403000h]
即把内存地址为403000的双字数据放入eax,为直接寻址。 - “[]”内放寄存器
mov eax,dword ptr [ebx]
即把ebx中的地址所指的内容放入eax中,为寄存器间接寻址。
mov eax,dword ptr [eax+edi]
即把eax中的数值加上edi中的数值所的结果作为内存地址,其指向的内容放入eax中,等价于mov eax,dword ptr [eax][edi],也为寄存器间接寻址。 - “[]”内放寄存器加立即数
mov eax,dword ptr [ebx+0ch]
即把ebx加0ch的结果作为内存地址,其指向的内容放入eax中,为寄存器相对寻址。
同样可等价于mov eax,dword ptr 0ch[ebx]。 - “[]”内放寄存器乘以立即数
mov eax,dword ptr [edi*4]
即把edi内的地址乘四所得的新地址指向的内容放入eax中,为寄存器比例寻址。 - lea, 意思是”装入有效地址”(Load Effective Address), 它的操作数就是地址,所以
lea eax,[edx-02]
就是把 edx 中的值减去2再送入eax, 而不是把由[edx-02]指明的内存地址上的值放到eax. 其结果是[eax]和[ebx-02]都表示同一个地址.