CPU各寄存器的作用
ebp和esp是32位的SP,BP esp是堆疊指針 ebp是基址指針 ESP與SP的關係就象AX與AL,AH的關係. 32位CPU所含有的寄存器有:
4個數據寄存器(EAX、EBX、ECX和EDX) 2個變址和指針寄存器(ESI和EDI) 2個指針寄存器(ESP和EBP) 6個段寄存器(ES、CS、SS、DS、FS和GS) 1個指令指針寄存器(EIP) 1個標誌寄存器(EFlags) 寄存器AX和AL通常稱為累加器(Accumulator),用累加器進行的操作可能需要更少時間。累加器可用於乘、除、輸入/輸出等操作,它們的使用頻率很高
寄存器BX稱為基地址寄存器(Base Register)。它可作為存儲器指針來使用
寄存器CX稱為計數寄存器(Count Register)。在循環和字符串操作時,要用它來控制循環次數在位操作中,當移多位時,要用CL來指明移位的位數
寄存器DX稱為數據寄存器(Data Register)。在進行乘、除運算時,它可作為默認的操作數參與運算,也可用於存放I/O的端口地址。
寄存器ESI、EDI、SI和DI稱為變址寄存器(Index Register),它們主要用於存放存儲單元在段內的偏移量,用它們可實現多種存儲器操作數的尋址方式,為以不同的地址形式訪問存儲單元提供方便。
變址寄存器不可分割成8位寄存器。作為通用寄存器,也可存儲算術邏輯運算的操作數和運算結果。
它們可作一般的存儲器指針使用。在字符串操作指令的執行過程中,對它們有特定的要求,而且還具有特殊的功能。
寄存器EBP、ESP、BP和SP稱為指針寄存器(Pointer Register),主要用於存放堆疊內存儲單元的偏移量,用它們可實現多種存儲器操作數的尋址方式,為以不同的地址形式訪問存儲單元提供方便。
指針寄存器不可分割成8位寄存器。作為通用寄存器,也可存儲算術邏輯運算的操作數和運算結果。 它們主要用於訪問堆疊內的存儲單元,並且規定:
BP為基指針(Base Pointer)寄存器,用它可直接存取堆疊中的數據
SP為堆疊指針(Stack Pointer)寄存器,用它只可訪問棧頂。
CPU內部的段寄存器:
CS——代碼段寄存器(Code Segment Register),其值為代碼段的段值
DS——數據段寄存器(Data Segment Register),其值為數據段的段值
ES——附加段寄存器(Extra Segment Register),其值為附加數據段的段值
SS——堆疊段寄存器(Stack Segment Register),其值為堆疊段的段值
FS——附加段寄存器(Extra Segment Register),其值為附加數據段的段值
GS——附加段寄存器(Extra Segment Register),其值為附加數據段的段值