00401AA0 >/$ 55 push ebp 00401AA1 |. 8BEC mov ebp, esp 00401AA3 8BC5 mov eax, ebp 1 00401AA5 68 F8244000 push 004024F8 00401AAA 8D45 00 lea eax, dword ptr [ebp] 2 00401AAD 8D45 FC lea eax, dword ptr [ebp-4] 3 00401AB0 8B45 00 mov eax, dword ptr [ebp] 4 00401AB3 90 nop 1处把ebp地址给了eax 2处也把ebp的地址给了eax 3处先把ebp的地址上移一格再给了eax 4处才把ebp的内容给了eax 看来源地址寄存器用[]括起来表示内容,不用[]括起来表示地址,除了lea指令以外,在lea指令中,源地址用[]括起来表示地址而非内容。32位操作系统下,内存偏移就是内存地址,因为他是平坦的内存分布形式, 对于寄存器来说,如ebx,[ebx]表示ebx所指向的地址内的内容,ebx表示ebx所指向的地址, ebx就如c语言中的指针一样,p代表ebx,*p代表[ebx]。
|