在8086cpu的指令集中,有的指令的執行是影響標誌暫存器的,比如:add、sub、mul、div、inc、or、and等,它們大都是運算指令,進行邏輯或算術運算;
有的指令的執行對標誌暫存器沒有影響,比如:mov、push、pop等,它們大都是傳送指令。
使用一條指令的時候,要注意這條指令的全部功能,其中包括執行結果對標記暫存器的哪些標誌位造成影響。
標誌暫存器的結構
flag暫存器是按位起作用的,也就是說,它的每一位都有專門的含義,記錄特定的資訊。
8086cpu中沒有使用flag的1、3、5、12、13、14、15位,這些位不具有任何含義。
標誌暫存器的作用
用來儲存相關指令的某些執行結果
用來為cpu執行相關指令提供行為依據
用來控制cpu的相關工作方式
1、直接訪問標誌暫存器的方法
2、記憶體中16位標誌位表示
3、標誌位說明
zf標記相關指令的計算結果是否為0
pf記錄指令執行後,結果的所有二進位制位中1的個數:
sf 標誌是cpu對有符號數運算結果的一種記錄 。
將資料當作有符號數來運算的時候,通過sf可知結果的正負;將資料當作無符號數來運算,sf的值則沒有意義,雖然相關的指令影響了它的值。
sf記錄指令執行後,將結果視為有符號數
在進行無符號數運算的時候,cf記錄了運算結果的最高有效位向更高位的進製值,或從更高位的借位值。
cf記錄指令執行後:
對於位數為n的無符號數來說,其對應的二進位制資訊的最高位即第n-1位,是最高有效位
假想存在的第n位,就是相對最高有效位的更高位。
在進行有符號數運算的時候,如結果超過了機器所能表示的範圍稱為溢位。
of記錄有符號數操作指令執行後
機器所能表達的範圍
以8位運算為例,結果用 8 位暫存器或記憶體單元來存放,機器所能表示的範圍就是-128~127。
同理,對於16 位有符號數,機器所能表示的範圍是-32768~32767。
注意,此處溢位只是對有符號數運算而言。
cf和of的區別
cf是對無符號數運算有意義的進/借位標誌位
of是對有符號數運算有意義的溢位標誌位
應用
在串處理指令中,控制每次操作後si,di的增減:
對df位進行設定的指令:
tf-陷阱標誌(trap flag):用於除錯時的單步方式操作。當tf=1時,每條指令執行完後產生陷阱,由系統控制計算機;當tf=0時,cpu正常工作,不產生陷阱。
if-中斷標誌(interrupt flag):當if=1時,允許cpu響應可遮蔽中斷請求;當if=0時,關閉中斷。
cpu在執行完一條指令之後,如果檢測到標誌暫存器的tf位為1,則產生單步中斷(中斷型別碼為1),引發中斷過程,執行中斷處理程式。
彙編 標誌暫存器
我們已經接觸過像ax bx cx si di ss cs等暫存器了,但是在8086cpu中有乙個比較特殊的暫存器 標誌暫存器 flag 2.基本介紹 與其他暫存器不同的是,標誌暫存器中儲存的不是資料,而是標誌狀態字 psw 而且其他暫存器都是作為乙個整體在使用,我們常說某某暫存器中放著某個資料,但是...
標誌暫存器df 標誌暫存器
cpu內部的暫存器中,有一種特殊的暫存器具有以下三種作用。用來儲存相關指令的某些執行結果 用來為cpu執行相關指令提供行為依據 用來控制cpu的相關工作方式 這種特殊的暫存器在8086cpu種,被稱為標誌暫存器 flag 8086cpu的標誌暫存器有16位,其中儲存的資訊通常被稱為程式狀態字 psw...
暫存器,標誌暫存器
涉及硬體傳輸資料的,往往包含以下內容 1.資料傳輸引腳 資料放 2.控制引腳 怎麼控制 3.狀態引腳 結果如何 暫存器相當於cpu內部的儲存單元,可能是連續排列,相當於 c語言中的陣列。一 8個通用暫存器 16 bit accumulate axah alr0 count cxch clr1 dat...