
1. 通用寄存器
數據寄存器 |
用處 |
AX(accumulator) |
作為 累加器 用,它是算數運算的主要寄存器。另外,所有的I/O指令都使用這一寄存器與外部設備傳送信息 |
BX(base) |
計算機存儲器地址時,經常作為寄存器 |
CX(count) |
在位移、循環和串處理指令中常用來做保存計數值 |
DX(data) |
一般在做雙字長運算時把DX和AX組合在一起存放一個雙字長數,DX用來存放高位;對某些I/O操作,DX可用來存放I/O的端口地址 |
指針寄存器 |
用處 |
SP(stack pointer)、ESP |
堆棧指針寄存器,其中存放當前堆棧段棧頂的偏移量,他們總是與SS堆棧段寄存器配合存取堆棧中的數據。實模式下使用SP,在80386以上的保護模式下使用ESP |
BP(base pointer)、EPB |
基址指針寄存器。它可以與堆棧段寄存器SS聯用來確定堆棧段中的嗎某一存儲單元的地址。並可以作堆棧區中的一個基地址以便訪問堆棧中的信息。 |
變址寄存器 |
作用 |
SI(source index) 源變址寄存器 DI(destination index) 目的變址寄存器 |
一般與數據段寄存器DS聯用,用來確定數據段中某一存儲單元的地址。這兩個變址寄存器有自動增量和自動減量的功能。 |
SP、ESP堆棧指針不能隨意修改
2. 控制寄存器
指令指針寄存器
IP、EIP
叫做指令指針寄存器,它總是與CS段寄存器配合指出下一條要執行指令的地址,其中存放偏移量部分。計算機用指令指針寄存器來控制指令序列的執行流程。
標志寄存器
運算結果特征標志 |
用處 |
CF(Carry Flag) |
進位標志,記錄運算結果的最高位向前產生的進位或借位。可用於檢測無符號數二進制加減法運算時是否發生溢出(溢出時 CF=1 ) |
PF(Parity Flag) |
奇偶標志,記錄運算結果最低位中含1的個數是奇還是偶。可用於檢測數據傳送過程中是否發生錯誤。 |
AF(Auxiliary carry) |
輔助進位標志,記錄運算結果低4位向前產生的進位或借位。只有在執行十進制運算指令時才關心此位。 |
ZF(Zero Flag) |
零標志,記錄運算結果是否位0。結果為0則置1,否則清0 |
OF(Overflow Flag) |
溢出標志,記錄運算結果是否超出了機器所能表示的范圍。可用於檢測帶符號數運算時是否發生溢出(溢出時OF=1) |
SF(Sign Flag) |
符號標志,記錄運算結果的符號。結果為負則置1,否則清0 |
控制標志(處理器) |
用處 |
IF(Interrupt Flag) |
中斷允許標志,IF的控制只對外部可屏蔽中斷請求(INTR)起作用。當IF=1時允許CPU響應INTR。 |
DF(Direction Flag) |
方向標志。專服務於字符串操作指令,當DF位為1時,每次操作后使變址寄存器SI和DI減小,這樣就使串處理從高地址向低地址方向處理。當DF位為0時,則使SI和DI增大。 |
TF(Trap Flag) |
陷阱標志,用於程序調試。當TF=1 時,CPU處於單步方式;當TF=0時,CPU處於連續方式。 |
IOPL(I/O Privilege Level) |
特權標志,占D13和D12兩位。在保護模式下,用於控制對I/O地址空間的訪問。只對80286以上CPU有效。 |
ID(Identification) |
標識標志,若ID=1,則表示Pentium支持CPUID指令。只對Pentium以上CPU有效。 |

3.段寄存器
IBM PC機的存儲器采用分段管理方法組織,因此一個物理地址用段基址和偏移量 表示。
段寄存器存放段基址。在實模式下存放當前正在運行程序的段基地址,在保護模式下存放段選擇子。

段寄存器 |
用處 |
CS(code segment) |
代碼段寄存器,指定當前代碼段,代碼段中存放當前正在運行的程序段。 |
SS(stack segment) |
指定當前堆棧段。 |
DS(data segment) |
數據段寄存器,指定當前運行程序所使用的數據段。 |
ES(extra segment) |
附加數據段寄存器,指定當前運行程序所使用的附加數據段 |
DS是主要的數據段寄存器,在默認情況下使用DS所指向段的數據。若要引用其它段中的數據,需要顯式說明。