程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 匯編語言 >> 匯編基礎:標志寄存器

匯編基礎:標志寄存器

編輯:匯編語言

Intel 8086/8088CPU設置了一個16位的標志寄存器,用來反映微處理器的當前狀態和某些控制,標志寄存器中有9個標志位,分為兩大類:狀態標志(CF, PF, AF, ZF, SF, OF)和控制標志(TF, IF, DF),狀態標志由CPU根據運算結果自動設置,用來反映CPU的執行單元EU執行算術運算或邏輯運算後的結果特征,這些特征常用來影響或者是控制某些後續指令的執行,控制標志由系統程序或者用戶程序用指令來設置或者是清除,用來控制CPU的某些操作。

1)、狀態標志

(1)進位位CF

進位位CF用來反映運算結果是否產生進位或者是借位。如果運算結果的最高

位(字操作的15位和字節操作的第7位)產生一個進位(減法),則CF置1,否則CF清零,另外CF在循環移位/移位類指令中用來保存從最高位或最低位移出的0或1

(2)奇偶位PF

奇偶位PF用來反映運算結果低八位中“1”的個數,可以為傳送數據時可能產生的出錯情況提供校驗條件,如果運算結果中的低八位中“1”的個數為偶數個時,則置PF為1,否則置0

(3)輔助進位位AF

輔助進位位AF用來反映運算結果低四位產生進位或借位情況,如果運算結果的第3位產生了一個進位或借位,,則AF置1,否則置0,AF只反映運算結果的低八位,與操作數長度無關,主要用於十進制的調整

(4)零值位ZF

零值位ZF用來反映運算結果是否為0, 如果運算結果為0,則ZF置為1, 否則置為0

(5)符號位SF

符號位SF再將運算結果視為帶符號數時,用來反映運算結果是正數還是負數,如果運算結果是負數,即一個數的最高位為1則SF置1,否則置0,所以SF與運算結果的最高位相一致

(6)溢出位OF

溢出位OF用來反映運算結果是否超出了補碼的表示范圍,8位帶符號數的補碼的表示范圍是-128--+127, 16位的帶符號數補碼表示范圍是-32768--+32767,如果運算結果超過了補碼的范圍,則OF置1,否則置0.

2)控制標志

(1)單步標志位TF

單步標志位TF也叫跟蹤標志位,用藥用於程序程序的跟蹤調試,當TF=1時,CPU進入單步狀態。

(2)中斷允許位IF

中斷允許位IF用於決定CPU是否可以相應外部可屏蔽中斷請求,當IF=1時為中斷狀態,即允許CPU響應外部可屏蔽中斷,反則一樣

(3)方向位DF

方向位DF決定串操作指令執行時指針寄存器的調整方向方向,當DF=0時,正向處理,從地地址向高地址,即串操作指令自動地使地址寄存器(SI或DI)遞增,反之同樣

本文出自 “驿落黃昏” 博客,請務必保留此出處http://yiluohuanghun.blog.51cto.com/3407300/938213

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved