寄存器用途和英文全稱
32位
寄存器類別和用途
基本程序執行寄存器(basic program execution registers)。8 個通用寄存器,6 個段寄存器,一個處理器狀態標志寄存器(EFLAGS),和一 個指令指針寄存器(EIP)。
EAX、AX、AH和AL
一些寄存器的組成部分可以處理 8 位的值。例如,AX 寄存器的高 8 位被稱為 AH,而低 8 位被稱為 AL。同樣的重疊關系也存在於 EAX、EBX、ECX 和 EDX 寄存器中:
32 位 | 16 位 | 8 位(高) | 8 位(低) |
---|---|---|---|
EAX | AX | AH | AL |
EBX | BX | BH | BL |
ECX | CX | CH | CL |
EDX | DX | DH | DL |
其他通用寄存器只能用 32 位或 16 位名稱來訪問,如下表所示:
32 位 | 16 位 | 32 位 | 16 位 |
---|---|---|---|
ESI | SI | EBP | BP |
EDI | DI | ESP | SP |
通用寄存器有特殊用法:
- 乘除指令默認使用EAX。它常常被稱為擴展累加器(extended accumulator)寄存器。
- CPU 默認使用 ECX 為循環計數器。
- ESP 用於尋址堆棧數據。它極少用於一般算術運算和數據傳輸,通常被稱為擴展堆棧指針(extended stack pointer)寄存器。
- ESI 和 EDI 用於高速存儲器傳輸指令,有時也被稱為擴展源變址(extended source index)寄存器和擴展目的變址(extended destination index)寄存器。
- 高級語言通過 EBP 來引用堆棧中的函數參數和局部變量。除了高級編程,它不用於一般算術運算和數據傳輸。它常常被稱為擴展幀指針(extended frame pointer)寄存器。
指令指針
指令指針(EIP)寄存器中包含下一條將要執行指令的地址。某些機器指令能控制 EIP,使得程序分支轉向到一個新位置。call和ret會改變其值。
狀態標志位
狀態標志位反映了 CPU 執行的算術和邏輯操作的結果。其中包括:溢出位、符號位、零標志位、輔助進位標志位、奇偶校驗位和進位標志位。下述說明中,標志位的縮寫緊跟在標志位名稱之后:
- 進位標志位(CF),與目標位置相比,無符號算術運算結果太大時,設置該標志位。
- 溢出標志位(OF),與目標位置相比,有符號算術運算結果太大或太小時,設置該標志位。
- 符號標志位(SF),算術或邏輯操作產生負結果時,設置該標志位。
- 零標志位(ZF),算術或邏輯操作產生的結果為零時,設置該標志位。
- 輔助進位標志位(AC),算術操作在 8 位操作數中產生了位 3 向位 4 的進位時,設置該標志位。
- 奇偶校驗標志位(PF),結果的最低有效字節包含偶數個 1 時,設置該標志位,否則,清除該標志位。一般情況下,如果數據有可能被修改或損壞時,該標志位用於進行 錯誤檢測。
通用寄存器:
英文 | 功能 | 寄存器 | 編號(二進制) | 編號(十進制) | 字母 | 全稱 | 功能 | ||
---|---|---|---|---|---|---|---|---|---|
32位 | 16位 | 8位 | D | double | 雙 | ||||
accumulator | 累加 | EAX | AX | AL | 000 | 0 | L | low | 低位 |
count | 計數 | ECX | CX | CL | 001 | 1 | H | high | 高位 |
data | 數據 | EDX | DX | DL | 010 | 2 | E | extend | 擴展 |
base | 基址 | EBX | BX | BL | 011 | 3 | R | register | 寄存器 |
Stack Pointer | 堆棧指針 | ESP | SP | AH | 100 | 4 | I | immediate | 立即數 |
Base Pointer | 基址指針 | EBP | BP | CH | 101 | 5 | M | memory | 內存 |
Source Index | 源變址 | ESI | SI | DH | 110 | 6 | B | byte | 字節 |
Destination Index | 目的變址 | EDI | DI | BH | 111 | 7 | W | word | 字 |
標志寄存器(FLAG/16位):
英文 | 功能 | 全稱 | 標志形式 |
---|---|---|---|
OF | 溢出標志 | overflow flag | 狀態標志 |
SF | 符號標志 | sign flag | 狀態標志 |
ZF | 零標志 | zero flag | 狀態標志 |
CF | 進位標志 | carry flag | 狀態標志 |
AF | 輔助進位標志 | auxiliary carry flag | 狀態標志 |
PF | 奇偶標志 | parity flag | 狀態標志 |
DF | 方向標志 | direction flag | 控制標志 |
IF | 中斷標志 | interrupt flag | 控制標志 |
TF | 陷進標志 | trap flag | 控制標志 |
段寄存器(16位):
英文 | 含義 | 全稱 | 功能 |
---|---|---|---|
CS | 代碼段 | Code Segment | 指明代碼段的起始地址 |
DS | 數據段 | Data Segment | 指明數據段的起始地址 |
SS | 堆棧段 | Stack Segment | 指明堆棧段的起始地址 |
ES | 附加段 | Extra Segment | 指明附加段的起始地址 |
指令指針寄存器(32位)EIP:Extend Instruction Pointer
參考: