寄存器在彙編和反彙編中都是必需品,我把各類寄存器及其作用總結了一下,希望大家多多交流
4個數據寄存器(EAX、EBX、ECX和EDX)
2個變址和指針寄存器(ESI和EDI) 2個指針寄存器(ESP和EBP)
6個段寄存器(ES、CS、SS、DS、FS和GS)
1個指令指針寄存器(EIP) 1個標誌寄存器(EFlags)
EBP :(Extended Base Pointer)基址指針寄存器,存放棧底指針
ESP :(Extended Stack Pointer)棧指針寄存器,存放棧頂指針
EAX :(Extended Accumulate )累加寄存器,用做加減乘除運算
EBX :(Extended Base)基址寄存器,可以用來存儲指針
ECX :(Extended Count)計數寄存器,用在循環中控制循環的次數
EDX :(Extended Data)數據寄存器,在進行乘、除運算時,它可作爲默認的操作數參與運算,通常用來保存餘數。也 可用於存放I/O的端口地址
ESI:(Extended Source Index)源索引寄存器,可以存放任何數據,但是習慣把它存放指針。
EDI:(Extended Destination Index)目的索引寄存器,但是ESI和EDI雖然他倆經常配合,但是之間的區別還是比較大的。在字符串處理指令中,ESI和DS結合,DS:ESI構成全指針,在穿處理指令方面,ESI負責只讀,EDI負責只寫。關於爲啥只能ESI和DS結合形參全指針,這是硬件構造決定的,沒有選擇性。ES:EDI,同樣構成全指針。
EIP:(Extended Instruction Pointer)指令指針寄存器,要存放下一條執行指令的地址
EFL:(Extended Flag)標誌寄存器,用來運算結果標誌(進位,溢出等),狀態控制標誌(跟蹤,中斷允許等)。
CS——代碼段寄存器(Code Segment Register),其值爲代碼段的段值;
DS——數據段寄存器(Data Segment Register),其值爲數據段的段值;
ES——附加段寄存器(Extra Segment Register),其值爲附加數據段的段值;
SS——堆棧段寄存器(Stack Segment Register),其值爲堆棧段的段值;
FS——附加段寄存器(Extra Segment Register),其值爲附加數據段的段值;
GS——附加段寄存器(Extra Segment Register),其值爲附加數據段的段值。