彙編語言-王爽spa
CPU內部的寄存器中,有一種特殊的寄存器,具備下面的3種做用:
(1)用來存儲相關指令的某些執行結果
(2)用來爲CPU執行相關指令提供行爲依據;
(3)用來控制CPU的相關工做方式
這種特殊的寄存器,稱之爲標誌寄存器flag,存儲的信息一般稱爲程序狀態字PSWblog
flag和其餘寄存器不同,其餘寄存器用來存放數據,都是整個寄存器具備一個含義,可是flag寄存器是按照位起做用,每一位都有不一樣含義,記錄特定的信息get
flag的1,3,5,12,13,14,15位在8086CPU中沒有使用,不具備任何含義,可是其餘位具備特殊含義it
flag的第6位是ZF,零標誌位,記錄相關的指令執行後,其結果是否爲0,若是結果爲0,那麼zf=1, 若是不爲0,那麼zf=0class
在8086CPU的指令集中,有的指令的執行是影響標誌寄存器的,例如:
add, sub, mul, div, inc, or, and等等,大都是運算指令(進行邏輯或者算術運算),有的指令的執行對於標誌寄存器沒有影響,例如:mov, push, pop等等,大都是傳送指令,在使用一條指令時候,須要注意這條指令的所有功能,包括,執行結果對於flag的哪些標誌位形成影響。程序
flag的第2位是PF,奇偶標誌位,記錄相關指令執行後,其結果全部的bit位中1的個數是否位偶數,若是1的個數爲偶數,則pf=1, 若是爲奇數,那麼pf=0im
flag的第7位是SF, 符號標誌位,記錄相關指令執行後,其結果是否位負數,若是結果爲負數,sf=1, 若是結果爲非負數,sf=0
計算機中一般使用補碼來表示有符號數據,計算機中y一個數據能夠看做是有符號數,也能夠當作是無符號數
SF標誌,CPU對有符號數運算結果的一種記錄,記錄數據的正負,若是將數據看成有符號數來運算,能夠經過SF得知結果的正負,若是將數據看成無符號數來運算,SF的值沒有意義,雖然相關的指令影響了它的值。數據
flag的第0位是CF,進位標誌位,通常狀況下,在進行無符號數運算時候,CF記錄運算結果的最高有效位向更高位的進位值,或者從更高位的借位值。
img
flag的第11位是OF,溢出標誌位,通常狀況下,OF記錄了有符號數運算的結果是否發生了溢出,OF=1, 若是沒有,OF=0計算機
CF和OF的區別,CF是對無符號數運算有意義的標誌位,而OF是對有符號數運算有意義的標誌位