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暫存器 字型大小 訂閱 學習彙編,會有很多類似標題列舉的這些概念,如果對這些概念沒有乙個較清晰的認識,學習起來會相當的吃力。我也是在大學裡好好學過彙編,畢業後一直沒有摸過,現在,我又把書重新拾起來,...