eflags:存放cpu的兩類標誌。
狀態標誌:反映處理器當前的狀態,如有無溢位,有無進製等。
控制標誌:用來控制處理器的工作方式,如是否響應可遮蔽中斷等。
各狀態標識的含義如下。
1、 of:溢位標誌。of=1表示兩個有符號數的運算結果超出了可以表示的範圍,結果是錯誤的;of=0表示沒有溢位,結果正確。進行無符號數運算時也會產生新的of標誌(cpu不知道處理物件是否為有符號數),此時程式設計師可以不關心of標誌。
2、df:方向標誌。df=0時,每次執行字串指令後,源或目的位址指標用加法自動地修改位址;df=1時用減法修改位址。它用來控制位址的方向變化。
3、if:中斷允許標誌。if=1表示允許處理器響應可遮蔽中斷請求訊號,成為開中斷,if=0表示不允許處理器響應可遮蔽中斷請求訊號,稱為關中斷。
4、sf:符號標誌。sf=1表示運算結果的最高位為1。對於有符號數,有溢位標誌of=0時,sf=1表示運算結果為負,sf=0表示運算結果非負(正或零)。of=1時,由於結果是錯誤的,所以符號位也和正確值相反。例如,兩個負數相加產生溢位,此時sf=0。對於無符號數運算,sf無意義,但是可以看出結果的大小規模。
5、zf:零標誌。zf=1表示運算結果為零,減法運算為零意味著兩個參加運算的數大小相等;zf=0,表示運算結果非零。
6、af:輔助進製標誌。它是另個bcd數運算時第三位數上的進製,供運算會調整結果用,對其他數的運算沒有意義。
7、pf:奇偶標誌。pf=1表示運算結果的低八位中有偶數個1;pf=0表示奇數個1,它可以用來進行奇偶校驗。
8、cf:進製/借位標誌。cf=1表示兩個無符號數的加法有進製,或者是減法運算有借位,需要對它們的高位進行處理;cf=0表示沒有產生進製或借位。同樣,進行有符號數運算時也會產生新的cf標誌,此時程式設計師可以不關心cf標誌。
狀態標誌在每次運算後自動產生,控制標誌的值則由指令設定。
另外,還有乙個單步標誌tf(或叫陷阱標誌),用於程式的除錯。tf=1時,每次執行一條指令都會產生一次陷阱,改程式被暫停,tf=0時,不產生陷阱。
還有2位表示i/0操作特權級別的標誌。
80X86暫存器組
80x86暫存器組 背景知識 intel cpu的發展史 第一階段 intel cpu,是從最初的4位處理器4004發展到8位處理器8008,再到8位微處理器8080,以及之後的16位微處理器8086 由8086開始,intel 進入了 x86 時代 第二階段 8086與8088的聯絡和區別 int...
為什麼早期x86處理器暫存器很少?
8086是一款16位的微處理器,比它更早的是8080。它有6個8位暫存器,分別命名為 a,b,c,d,e,h和l。通過兩兩組合,我們可以用它們產生16位的虛擬暫存器,例如 bc,de和hl。另外,你甚至可以將乙個16位的位址放入hl暫存器,並用另外乙個虛擬暫存器 m 來解引用它。所以,舉個例子,你可...
80x86的程式可見暫存器組
80x86的程式可見暫存器組 80x86的程式可見暫存器組 暫存器可以分為程式可見暫存器和程式不可見暫存器兩大類。所謂程式可見的暫存器是指在組合語言程式設計中用到的暫存器,它們可以由指令來指定 1 通用暫存器 eax 16位,ax ah 8位 al 8位 ebx 16位,bx bh 8位 bl 8位...