#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int num=8; #mov dword ptr [num],8 #汇编说明: 将值8 赋给 双字num的地址内, int *q=(int*)num; #mov eax,dword ptr [num] #汇编说明: 将双字类型 num中的值 赋给 eax 寄存器中, #mov dword ptr [q],eax #汇编说明: 将eax寄存器中的值 赋给 双字类型 q 的地址内, int *m= (int*)# #lea eax,[num] #将num 的地址 赋给 eax 寄存器中, #mov dword ptr [m],eax #将 eax寄存器中的值付给 双字类型 m 的地址内, char *p = (char*)# #lea eax,[num] #将num 的地址 赋给 eax 寄存器中, #mov dword ptr [p],eax #将eax寄存器中的值付给 双字类型 p 的地址中, /* 汇编说明: lea 指令传递的是地址. mov 指令传递的是值. */ printf("num: %x\r\n",&num); printf("p :%x\r\n",p); printf("*p :%d\r\n",*p); # 这个取地址中的值得操做是失败的,非法访问了一个的地址. return 0; }