80x86的程式可見暫存器組

2021-10-22 14:00:07 字數 1650 閱讀 1376

80x86的程式可見暫存器組

80x86的程式可見暫存器組

暫存器可以分為程式可見暫存器和程式不可見暫存器兩大類。所謂程式可見的暫存器是指在組合語言程式設計中用到的暫存器,它們可以由指令來指定

1、通用暫存器

eax:(16位,ax:(ah:(8位),al:(8位)))

ebx:(16位,bx:(bh:(8位),bl:(8位)))

ecx:(16位,cx:(ch:(8位),cl:(8位)))

edx:(16位,dx:(dh:(8位),dl:(8位)))

esp:(16位,sp:(16位))

ebp:(16位,bp:(16位))

edi:(16位,di:(16位))

esi:(16位,si:(16位))

2、專用暫存器

eip:(16位,ip:(16位))

eflags(16位,flags:(16位))

ip:指令指標暫存器,它用來存放**段中的偏移位址。在程式執行過程中,它始終指向下一條指令的首位址,它與**段暫存器cs聯用確定下一條指令的實體地址

sp:堆疊指標暫存器,它與堆疊段暫存器用來確定堆疊段中棧頂的位址,也就是說sp用來存放棧頂的偏移位址

flags為標誌暫存器,又稱程式狀態暫存器(psw),這是乙個存放條件碼標誌、控制標誌和系統標誌的暫存器

8086標誌暫存器:

flags:(1位,1位,1位,1位,of:(1位),df:(1位),if:(1位),tf:(1位),sf:(1位),zf:(1位),1位,af:(1位),1位,pf:(1位),1位,cf:(1位),)

(1)條件碼標誌

用來記錄程式中執行結果的狀態資訊,它們是根據有關指令的執行結果由cpu自動設定的,由於這些狀態資訊往往作為後續條件轉移指令的轉移控制條件,所以稱為條件碼

溢位標誌(of):在運算過程中,如運算元超出了機器能表示的範圍稱為溢位,此時of置1,否則置0

符號標誌(sf):紀錄運算結果的符號,結果為負時置1,否則置0

零標誌(zf):運算結果為0時zf置1,否則置0

進製標誌(cf):紀錄運算時從最高有效位產生的進製值,最高有效位有進製時置1,否則置0

輔助進製標誌(af):紀錄運算時第3位(半個位元組)產生的進製值,第3位有進製時置1,否則置0

奇偶標誌(pf):用來為機器中傳送資訊時可能產生的**出錯情況提供檢驗條件,當結果運算元中1的個數為偶數時置1,否則置0

(2)控制標誌位

方向標誌(df):在串處理指令中控制處理資訊的方向用。當df位為1時,每次操作後使變址暫存器si和di減小,這樣使串處理從高位址向低位址方向處理。當df位為0時,則使si和di增大,使串處理從低位址向高位址方向處理

(3)系統標誌位

陷阱標誌(tf):用於除錯時的單步方式操作。當tf位為1時,每條指令執行完後產生陷阱,由系統控制計算機。當tf位為0時,cpu正常工作,不產生陷阱

中斷標誌(if):當if位為1時,允許cpu相應可遮蔽中斷請求,否則關閉中斷

i/o特權級標誌(iopl):在保護模式下,用於控制對i/o位址空間的訪問

3、段暫存器

段暫存器是專用於儲存器定址,用來直接或間接地存放段位址

cs:(16位)

ds:(16位)

es:(16位)

ss:(16位)

fs:(16位)

gs:(16位)

80X86暫存器組

80x86暫存器組 背景知識 intel cpu的發展史 第一階段 intel cpu,是從最初的4位處理器4004發展到8位處理器8008,再到8位微處理器8080,以及之後的16位微處理器8086 由8086開始,intel 進入了 x86 時代 第二階段 8086與8088的聯絡和區別 int...

80x86處理器的標誌暫存器

eflags 存放cpu的兩類標誌。狀態標誌 反映處理器當前的狀態,如有無溢位,有無進製等。控制標誌 用來控制處理器的工作方式,如是否響應可遮蔽中斷等。各狀態標識的含義如下。1 of 溢位標誌。of 1表示兩個有符號數的運算結果超出了可以表示的範圍,結果是錯誤的 of 0表示沒有溢位,結果正確。進行...

80X86CPU暫存器表

2009 08 04 22 59 17 分類 彙編 標籤 資料段 段 堆疊段 記憶體 堆 堆疊 cpu暫存器 字型大小 訂閱 學習彙編,會有很多類似標題列舉的這些概念,如果對這些概念沒有乙個較清晰的認識,學習起來會相當的吃力。我也是在大學裡好好學過彙編,畢業後一直沒有摸過,現在,我又把書重新拾起來,...