寄存器 注:名字以字母‘E’開頭的寄存器表示32位,如EAX 32位,AX 16位,AL是低8位,AH是8-15位
32位CPU的8個通用寄存器:EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI 數據寄存器EAX, EBX, ECX, EDX EAX:累加寄存器,是很多加法乘法指令的缺省寄存器 EBX:基址寄存器,在內存尋址時存放基地址 ECX:計數寄存器,是重復(REP)前綴指令和LOOP指令的內定計數器 EDX:數據寄存器,總是被用來放整數除法產生的余數
段寄存器 DS: 段寄存器,指向當前運行著的程序的數據段。 ES: 額外的段寄存器 SS: 棧段寄存器,指向棧段
索引寄存器ESI, EDI ESI:源索引寄存器 EDI:目的索引寄存器 在很多字符串操作指令中,DS:ESI指向源串,而ES:EDI指向目標串
指針寄存器 ip:指令指針寄存器,存儲的是CPU下次要執行的指令的地址,CS:IP用來指示當前運行的指令地址,不能直接訪問CS,也不能直接訪問IP BP:基址指針寄存器,也叫棧基址寄存器,存儲的是棧的棧底指針,經常被用作高級語言函數調用的“框架指針”(frame pointer)。 一個標準的函數起始代碼如下: push ebp;保存當前ebp mov ebp, esp;EBP設為當前堆棧指針 sub esp, xxx;預留xxx字節給函數臨時變量 這樣一來,EBP構成了該函數的一個框架,在EBP上放分別是原來的EBP,返回地址和參數。EBP下方則是臨時變量,函數返回時作mov esp,ebp/pop ebp/ret即可 SP:ESP寄存器存儲的棧的棧頂指針,始終指向棧頂。
新聞熱點
疑難解答