微處理器寄存器結構(通用寄存器、指針和狀態寄存器)


 

寄存器可以分為兩大類,一類為通用寄存器,一類為指針寄存器和變址寄存器。

 

通用寄存器

通用寄存器主要包括:EAX、EBX、ECX、EDX

EAX

Accumulator 累加器,其中EAX(32位)、AH(16位)、AX,AL(8位)

累加器用作乘除法時由特殊用途,但通常情況下視為通用寄存器

EBX

Base 基址寄存器,其中EBX(32位)、BH(16位)、BX,BL(8位)

基址寄存器用作存放訪問存儲單元的偏移地址

ECX

Count 計數器,其中ECX(32位)、CH(16位)、CX,CL(8位)

 

CL用於移位和循環移位計數,CX用作重復的串操作指令計數,CX或ECX用作LOOP/LOOPD計數

EDX

Data 數據寄存器,其中EDX(32位)、DH(16位)、DX,DL(8位)

數據寄存器是一個用用寄存器,在乘除法運算時也可用於記錄部分積和部分被除數

 

指針寄存器和變址寄存器

指針寄存器和變址寄存器包括:ESP、EBP、ESI、EDI

ESP

Stack Pointer 堆棧指針寄存器,該指針用於存儲堆棧存儲器數據

EBP

Base Pointer 基址指針寄存器,該指針用於存放堆棧段的數據區的“基地址”

ESI

Source Index 源變址指針寄存器,用於尋址串操作指令的源數據串

EDI

Destination Index 目的變址指針寄存器,該指針用於尋址串操作指令的目的數據串

EPI

Instruction Pointer 指令指針寄存器,一種專用寄存器,用於尋址當前需要取出的指令字節

Tip:需要注意的是,程序員不能對EIP/IP進行存取操作,程序中的轉移指令、返回指令和中斷處理能夠對EIP/IP進行存取

 

標志寄存器

9個標志位中,6個狀態標志位(CF、PF、AF、ZF、SF、OF),3個控制標志位(TF、IF、DF)

狀態標志位

CF:進位標志(Carry flag)。執行算數運算時,結果的最高位有進位或者借位,則CF=1;否則CF=0。

PF:奇偶標志(ParityFlag)。結果的低8位,有奇數個“1”,則PF=0;有偶數個“1”,則PF=1。

AF:半進位標志(Auxiliary carry Flag,也稱為半進位標志)。本次運算第四位有進位,則AF=1;否則AF=0。

ZF:零標志位(Zero Flag)。結果為0,則ZF=1;否則ZF=0。

SF:符號標志(Sign Flag)。結果為正,則SF=0;否則SF=1。

OF:溢出標志(OverFlow Flag)。結果溢出,則OF=1;否則OF=0。

 

溢出不一定有進位,有進位也不一定溢出。

例如:

CF=0  PF=0  AF=0  ZF=0  SF=1  OF=1

溢出判斷:兩個有符號數,符號位相同,運算結果的符號位與他們不同,則溢出,OF=1

 

方向標志位

方向標志DF(Direction Flag)

DF用於控制串操作指令的執行。

DF=0,則串操作指令地址自動增量修改。傳輸的傳送過程從低地址向高地址的方向進行;

DF=0,則串操作指令地址自動減量修改,傳數據的傳送過程從高地址向低地址的方向進行。

 

 

 

設置DF的方法:STD(DF置一),CLD(DF置零)

中斷標志IF(Interrupt Flag)

IF用來控制對可屏蔽中斷的響應。

IF=1,則允許CPU響應可屏蔽中斷請求;

IF=0,則禁止CPU響應可屏蔽中斷請求。

STI(IF置一),CLI(IF置零)。

IF只能控制CPU是否能夠響應可屏蔽中斷請求,而對不可屏蔽中斷及內部中斷無法控制.

陷阱標志TF(Trap Flag)

TF=1,微處理器單步工作;

TF=0,微處理器正常工作。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM