暫存器介紹

2022-02-14 12:23:47 字數 3025 閱讀 9599

圖中標為0或1的那些位是保留的位,其必須按照所示的用0或1來裝載它,並且在檢查eflags時將它們忽略。這樣能保證未來intel公司決定要用eflags暫存器的這些位定義更多標誌時的相容性。

改變eflags暫存器中的位的乙個方法是把eflags儲存起來,然後再對其儲存的映像修改想改的位,再用修改後的值裝載eflags。這樣只會修改想要修改的位,其餘的位(包括未定義的)不會改變,可以保證在將來的處理器上也行得通。

cf 進製標誌:如果乙個算術運算超出最高有效位產生進製或借位,它被置位為1;否則清0。

此標誌對無符號的算術運算提供了乙個溢位條件;並支援多精度的算術運算。

pf 奇偶標誌:指示結果低8位的奇偶性。若結果低8位中1的個數為偶數,pf為1;否則為0。

af 輔助進製標誌:如果位3向前有乙個進製或借位,af被置為1。它用在bcd算術運算中。

zf 零標誌:結果為零時置1。

sf 符號標誌:它被置成結果的最高有效位。

of 補碼溢位標誌:算術運算的結果超出了補碼所能表示的範圍,它被置為1。大多數算術指令都會使其置位。

例如,如果有乙個進製進入到最高有效位,但它並沒有產生進製,

或者沒有進製進入最高有效位,而它向前產生了進製都會使of置位。

tf 跟蹤標誌:控制產生單步中斷以支援程式的除錯。tf=1時,每條指令執行結束處將發生單步中斷。

if 中斷標誌:if=1接受處理器引腳上發來的外部中斷。if=0掛起外部中斷。

df 方向標誌:決定串操作指令在每步之後其變址暫存器是後加(df=0)或者後減(df=1)。

iopl 特權級字段:兩個位寬,保護模式下。指定了要求執行i/o指令的特權級,如果當前的特權級別在數值上

小於或等於iopl,i/o指令可以執行,否則發生乙個保護異常。

nt 巢狀任務位:控制iret指令的執行。如果nt=0,用棧中儲存的值恢復eflags、cs和eip執行常規的中斷返回。

如果nt=1,中斷返回用一任務轉換代替上述過程。

rf 重啟動標誌:控制著除錯故障是接受(rf=0),或者是被忽略(rf=1)。在成功地完成每一條指令以後處理器

會把rf清0。而當接收到乙個非除錯故障的故障訊號時,處理器把rf置1。

vm 虛擬8086方式位:該位置1,處理器將在虛擬8086方式下工作。否則在一般的保護方式下。

執行在任何特權級下的程式都可以置位或清除rf、nt、df和tf這些標誌位。只有在特權級0下執行的程式才能改變vm及iopl欄位。if位只能由具有i/o特權的程式所改變。rf和vm位只能由iret指令和任務切換來置位或清零。對其他的控制位則可由popf指令來置位。

進製標誌cf主要用來反映運算是否產生進製或借位。如果運算結果的最高位產生了乙個進製或借位,那麼,其值為1,否則其值為0。

使用該標誌位的情況有:多字(位元組)數的加減運算,無符號數的大小比較運算,移位操作,字(位元組)之間移位,專門改變cf值的指令等。

2、奇偶標誌pf(parity flag)

奇偶標誌pf用於反映運算結果中「1」的個數的奇偶性。如果「1」的個數為偶數,則pf的值為1,否則其值為0。

利用pf可進行奇偶校驗檢查,或產生奇偶校驗位。在資料傳送過程中,為了提供傳送的可靠性,如果採用奇偶校驗的方法,就可使用該標誌位。

3、輔助進製標誌af(auxiliary carry flag)

在發生下列情況時,輔助進製標誌af的值被置為1,否則其值為0:

對以上6個運算結果標誌位,在一般程式設計情況下,標誌位cf、zf、sf和of的使用頻率較高,而標誌位pf和af的使用頻率較低。

4、零標誌zf(zero flag)

零標誌zf用來反映運算結果是否為0。如果運算結果為0,則其值為1,否則其值為0。在判斷運算結果是否為0時,可使用此標誌位。

5、符號標誌sf(sign flag)

符號標誌sf用來反映運算結果的符號位,它與運算結果的最高位相同。在微機系統中,有符號數採用補碼表示法,所以,sf也就反映運算結果的正負號。運算結果為正數時,sf的值為0,否則其值為1。

6、溢位標誌of(overflow flag)

溢位標誌of用於反映有符號數加減運算所得結果是否溢位。如果運算結果超過當前運算位數所能表示的範圍,則稱為溢位,of的值被置為1,否則,of的值被清為0。

「溢位」和「進製」是兩個不同含義的概念,不要混淆。如果不太清楚的話,請查閱《計算機組成原理》課程中的有關章節。

1、追蹤標誌tf(trap flag)

當追蹤標誌tf被置為1時,cpu進入單步執行方式,即每執行一條指令,產生乙個單步中斷請求。這種方式主要用於程式的除錯。

指令系統中沒有專門的指令來改變標誌位tf的值,但程式設計師可用其它辦法來改變其值。

2、中斷允許標誌if(interrupt-enable flag)

中斷允許標誌if是用來決定cpu是否響應cpu外部的可遮蔽中斷發出的中斷請求。但不管該標誌為何值,cpu都必須響應cpu外部的不可遮蔽中斷所發出的中斷請求,以及cpu內部產生的中斷請求。具體規定如下:

cpu的指令系統中也有專門的指令來改變標誌位if的值。

3、方向標誌df(direction flag)

方向標誌df用來決定在串操作指令執行時有關指標暫存器發生調整的方向。在微機的指令系統中,還提供了專門的指令來改變標誌位df的值。

i/o特權標誌用兩位二進位制位來表示,也稱為i/o特權級字段。該欄位指定了要求執行i/o指令的特權級。如果當前的特權級別在數值上小於等於iopl的值,那麼,該i/o指令可執行,否則將發生乙個保護異常。

2、巢狀任務標誌nt(nested task)

巢狀任務標誌nt用來控制中斷返回指令iret的執行。具體規定如下:

3、重啟動標誌rf(restart flag)

重啟動標誌rf用來控制是否接受除錯故障。規定:rf=0時,表示「接受」除錯故障,否則拒絕之。在成功執行完一條指令後,處理機把rf置為0,當接受到乙個非除錯故障時,處理機就把它置為1。

4、虛擬8086方式標誌vm(virtual 8086 mode)

如果該標誌的值為1,則表示處理機處於虛擬的8086方式下的工作狀態,否則,處理機處於一般保護方式下的工作狀態。

esp暫存器與ebp暫存器介紹

esp extended stack pointer 是指標暫存器的一種 另一種為ebp 用於堆疊指標。esp為棧指標,用於指向棧的棧頂 下乙個壓入棧的活動記錄的頂部 而ebp為幀指標,指向當前活動記錄的頂部。棧指標與幀指標標識出了當前活動記錄的位置。當函式被呼叫的時候,執行如下操作 將幀指標壓入棧...

ARM暫存器介紹

arm微處理器支援7種執行模式,分別為 1.使用者模式 usr arm處理器正常的程式執行狀態 2.快速中斷模式 fiq 用於高速資料傳輸或通道管理 3.外部中斷模式 irq 用於通用的中斷處理 4.管理模式 svc 作業系統使用的保護模式 5.資料訪問終止模式 abt 當資料或指令預取終止時進入該...

8086暫存器介紹

8086 有14個16位暫存器,這14個暫存器按其用途可分為 1 通用暫存器 2 指令指標 3 標誌暫存器和 4 段暫存器等4類。1 通用暫存器有8個,又可以分成2組,一組是資料暫存器 4個 另一組是指標暫存器及變址暫存器 4個 資料暫存器分為 ah al ax accumulator 累加暫存器,...