地址:?對(duì)變量取地址使用“&”符號(hào)
指針:?TYPE *?定義指針,TYPE為數(shù)據(jù)類型
引用:?TYPE &?定義引用,TYPE為數(shù)據(jù)類型



13? int nVar = 0x12345678;
mov dword ptr ss:[ebp-C],12345678
14? int *pnVar = &nVar;
lea eax,dword ptr ss:[ebp-C]
mov dword ptr ss:[ebp-18],eax? ? //直接將地址存入內(nèi)存
15? char *pcVar = (char*)&nVar;
lea eax,dword ptr ss:[ebp-C]
mov dword ptr ss:[ebp-24],eax
16? short *psnVar = (short*)&nVar;
lea eax,dword ptr ss:[ebp-C]
mov dword ptr ss:[ebp-30],eax
18? printf("Justin: %08x \r\n", *pnVar);
19? printf("Justin: %08x \r\n", *pcVar);
20? printf("Justin: %08x \r\n", *psnVar);
23? char cVar[5] = {0x01, 0x23, 0x45, 0x67, 0x89};
mov byte ptr ss:[ebp-40],1
mov byte ptr ss:[ebp-3F],23
mov byte ptr ss:[ebp-3E],45
mov byte ptr ss:[ebp-3D],67
mov byte ptr ss:[ebp-3C],89

24? int *pnVar1 = (int*)cVar;
lea eax,dword ptr ss:[ebp-40]
mov dword ptr ss:[ebp-4C],eax

25? char *pcVar1 = (char*)cVar;
lea eax,dword ptr ss:[ebp-40]
mov dword ptr ss:[ebp-58],eax

26? short *psnVar1 = (short*)cVar;
lea eax,dword ptr ss:[ebp-40]
mov dword ptr ss:[ebp-64],eax

27? pnVar1 += 1;
mov eax,dword ptr ss:[ebp-4C]
add eax,4? ?//int?指針 4?位
mov dword ptr ss:[ebp-4C],eax
28? pcVar1 += 1;
mov eax,dword ptr ss:[ebp-58]
add eax,1? ? //char?指針 1位
mov dword ptr ss:[ebp-58],eax
29? psnVar1 += 1;
mov eax,dword ptr ss:[ebp-64]
add eax,2? //short指針 2位
mov dword ptr ss:[ebp-64],eax
32? int &nVarType = nVar;
lea eax,dword ptr ss:[ebp-C]
mov dword ptr ss:[ebp-70],eax
33? Add(nVar);
lea eax,dword ptr ss:[ebp-C]
push eax
call addressandpointerref.A11320
add esp,4
void Add(int &nVar) {
nVar++;
mov eax,dword ptr ss:[ebp+8]? ? //堆棧寄存器,獲取函數(shù)調(diào)用前push的地址
mov ecx,dword ptr ds:[eax]? ? ? ? //數(shù)據(jù)段寄存器
add ecx,1
mov edx,dword ptr ss:[ebp+8]
mov dword ptr ds:[edx],ecx
}
AH&AL=AX(accumulator):累加寄存器?
BH&BL=BX(base):基址寄存器?
CH&CL=CX(count):計(jì)數(shù)寄存器?
DH&DL=DX(data):數(shù)據(jù)寄存器?
SP(Stack Pointer):堆棧指針寄存器?
BP(Base Pointer):基址指針寄存器?
SI(Source Index):源變址寄存器?
DI(Destination Index):目的變址寄存器?
IP(Instruction Pointer):指令指針寄存器?
CS(Code Segment)代碼段寄存器?
DS(Data Segment):數(shù)據(jù)段寄存器?
SS(Stack Segment):堆棧段寄存器?
ES(Extra Segment):附加段寄存器?
OF overflow flag 溢出標(biāo)志 操作數(shù)超出機(jī)器能表示的范圍表示溢出,溢出時(shí)為1.?
SF sign Flag 符號(hào)標(biāo)志 記錄運(yùn)算結(jié)果的符號(hào),結(jié)果負(fù)時(shí)為1.?
ZF zero flag 零標(biāo)志 運(yùn)算結(jié)果等于0時(shí)為1,否則為0.?
CF carry flag 進(jìn)位標(biāo)志 最高有效位產(chǎn)生進(jìn)位時(shí)為1,否則為0.?
AF auxiliary carry flag 輔助進(jìn)位標(biāo)志 運(yùn)算時(shí),第3位向第4位產(chǎn)生進(jìn)位時(shí)為1,否則為0.?
PF parity flag 奇偶標(biāo)志 運(yùn)算結(jié)果操作數(shù)位為1的個(gè)數(shù)為偶數(shù)個(gè)時(shí)為1,否則為0.?
DF direcion flag 方向標(biāo)志 用于串處理.DF=1時(shí),每次操作后使SI和DI減小.DF=0時(shí)則增大.?
IF interrupt flag 中斷標(biāo)志 IF=1時(shí),允許CPU響應(yīng)可屏蔽中斷,否則關(guān)閉中斷.?
TF trap flag 陷阱標(biāo)志 用于調(diào)試單步操作.