#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; }