控制存器有IP和FLAGS
FLAGS稱爲標誌寄存器或程序狀態寄存器(PSW),雖然有16位,但是隻使用其中9位(標誌寄存器中的空位有什麼作用嗎),其中包括6個狀態標誌位和3個控制標誌
6個狀態標記位
狀態標記符記錄了算術邏輯運算的結果特徵,如溢出、進位等
CF(Carry flag) | 進位標誌位 |
---|---|
PF(Parity flag) | 奇偶標誌位 |
AF(Auxiliary carry flag) | 輔助進位標誌位 |
ZF(Zero flag) | 零標誌位 |
SF(Sign flag) | 符號標誌位 |
OF (Overflow flag) | 溢出標誌位 |
CF:當最高位向前有借位或進位時CF=1,否則爲 0;
該標誌位可用於多字(字節)數的加減運算。
PF:運算結果的低8位中1中個數爲偶數個時PF=1,否則爲 0
AF:運算時D3向D4位有進位或借位時AF=1,否則爲 0
ZF:運算結果爲0時ZF=1,否則爲 0
判斷運算結果是否爲0時,可使用此標誌位。
SF:運算結果最高位爲1時SF=1,否則爲 0
OF:運算結果超出了帶符號數的範圍,即溢出時OF=1,否則爲 0
注意區別OF和CF,OF只是對有符號數運算而言,CF是對無符號數運算有意義的標誌位,而OF是對有符號數運算有意義的標誌位。
3個控制標誌位
控制標誌符用於設置控制條件,控制CPU操作,使用專門指令才能改變。
TF | 陷阱標誌位 |
---|---|
IF | 中斷允許標誌位 |
DF | 方向標誌位 |
TF:TF=1時,處理器處於調試特性,CPU處於單步執行指令的工作方式。每執行一條指令後產生一次單步中斷。
IF:F=1時,使CPU可響應CPU外部的可屏蔽的中斷請求;IF=0使CPU禁止響應CPU外部的可屏蔽狀態中斷請求。
DF:在執行串操作指令時控制操作方向,DF=1時,按減地址方向進行,即從高地址向低地址操作;DF=0時,反之。
參考資料:
http://netclass.csu.edu.cn/NCourse/hep094/homepage/flags2.htm(各種標誌位的含義)
http://www.cppblog.com/luqingfei/archive/2010/08/04/122171.aspx(標誌寄存器)