1. 程式人生 > >32位處理器的暫存器介紹

32位處理器的暫存器介紹

32位處理器有三種操作模式:保護模式、實地址模式和系統管理模式。

保護模式:基本模式,所有指令和特性都是可用的

實地址模式:實現程式設計環境

系統管理模式:提供實現電源管理模式和系統安全等功能的機制

一、地址空間

保護模式下,32位處理器可以定址最高4G空間。實地址模式能訪問1M的記憶體。虛擬模式執行的多個程式每個都能訪問1M的記憶體。

二、基本暫存器

32位CPU所含有的暫存器有:

  • 8個32位通用暫存器:

    • 4個數據暫存器(EAX、EBX、ECX和EDX)

    • 2個變址和指標暫存器(ESI和EDI) 2個指標暫存器(ESP和EBP)

  • 6個段暫存器(ES、CS、SS、DS、FS和GS)

  • 1個指令指標暫存器(EIP)

  • 1個標誌暫存器(EFlags)

1、通用暫存器

每個暫存器都可作為一個32位值或兩個16位值來定址使用。某些16位的暫存器能夠按照8位值定址使用。

EAX的低16位稱為AX,AX的高8位稱為AH,低8位稱為AL。

32 16 高8 低8
EAX AX AH AL
EBX BX BH BL
ECX CX CH CL
EDX DX DH DL

下面幾個沒有8位模式:

32 16
ESI SI
EDI DI
EBP BP
ESP SP

2、資料暫存器

資料暫存器主要用來儲存運算元和運算結果等資訊,從而節省讀取運算元所需佔用匯流排和訪問儲存器的時間。

32位CPU有4個32位的通用暫存器EAX、EBX、ECX和EDX。

對低16位資料的存取,不會影響高16位的資料。

  • 暫存器EAX通常稱為累加器(Accumulator),用累加器進行的操作可能需要更少時間。可用於乘、 除、輸入/輸出等操作,使用頻率很高;

  • 暫存器EBX稱為基地址暫存器(Base Register)。它可作為儲存器指標來使用;

  • 暫存器ECX稱為計數暫存器(Count Register)。 在迴圈和字串操作時,要用它來控制迴圈次數;在位操作中,當移多位時,要用CL來指明移位的位數;

  • 暫存器EDX稱為資料暫存器(Data Register)。在進行乘、除運算時,它可作為預設的運算元參與運算,也可用於存放I/O的埠地址。

3、變址暫存器

32位CPU有2個32位通用暫存器ESI和EDI。

暫存器ESI、EDI、SI和DI稱為變址暫存器(Index Register),它們主要用於存放儲存單元在段內的偏移量, 它們可作一般的儲存器指標使用。

4、指標暫存器

32位CPU有2個32位通用暫存器EBP和ESP。

它們主要用於訪問堆疊內的儲存單元,並且規定:

  • EBP為基指標(Base Pointer)暫存器,一般作為當前堆疊的最後單元,用它可直接存取堆疊中的資料;

  • ESP為堆疊指標(Stack Pointer)暫存器,用它只可訪問棧頂。

5、指令指標暫存器

32位CPU把指令指標擴充套件到32位,並記作EIP

指令指標EIP、IP(Instruction Pointer)是存放下次將要執行的指令在程式碼段的偏移量。

6.標誌暫存器:EFLAG

CF:進位標誌
OF:溢位標誌
SF:符號標誌
ZF:零標誌
AC:輔助進位標誌
PF:奇偶標誌