新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 第13章 標志寄存器(X86匯編教程)

        第13章 標志寄存器(X86匯編教程)

        作者: 時間:2016-12-01 來源:網絡 收藏
        其實這章的內容不怎么重要,看不懂也沒關系,這些都是后臺自己處理的,標志寄存器很少有人自己操作,就好像你不知道你的心臟每分鐘跳幾下,但你仍然活得好好的這樣,另外,.之前居然有人轉載了某章節,雖然那一章我沒寫不能轉載......

        這一章簡單介紹一個寄存器.為之后的章節做鋪墊(由于咱是懶人,下一章幾時寫未定.)

        本文引用地址:http://www.104case.com/article/201612/324269.htm

        標志寄存器(PSW),是對計算的結果以及CPU的某些狀態進行保存用的.

        為了實現一些功能,CPU在執行某些指令的時候,會把計算產生的一些東西保存到標志寄存器,一般都是算數指令.比如說計算結果是正數還是負數.

        186的標志寄存器是16位的,除了幾個沒用到的位,每一位都有不同含義和名字.名字表如下:

        15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 |00
        [ ][ ][ ][][OF][DF][IF][TF ][SF][ZF][ ][AF][ ][PF][ ][CF]

        [第0位CF]
        這個用來記錄相關指令執行后超出界限的那一位數據.
        比如:
        加法的時候:
        mov ah,10000000B
        mov al,10000000B
        add ah,al
        結果:ah=00000000B(理論上有個1在第9位,但ah是8位寄存器,所以第9位不放在這里)
        第9位放在CF里!

        減法計算的時候能計算向高位借的數值:
        mov ax,0000H
        sub ax,0001H
        結果:ax=FFFFH(向第17位借了一個數字,于是CF=1(表示有借位!),如果沒借數字則CF=0)
        [第2位PF]
        用來記錄相關指令執行后,其結果所有bit位中1的個數是否為偶數,是則PF=1否則PF=0
        [第6位ZF]
        用來記錄相關指令執行結果是否為0,如果為0則ZF=1否則ZF=0,比如:
        mov AX,1
        sub AX,1
        結果為0則ZF=1
        影響標志位的指令,比如add,sub,mul,div,inc,or,and等,大多都是運算指令,有些則沒有影響,如mov,push,pop等,大多都是傳送指令.
        [第7位SF]
        記錄指令執行后的結果是否為負數,如果是負數則=1否則=0
        [第8位TF]
        如果TF=1則CPU運行一行代碼后就產生中斷,如果為0則代碼一直運行下去.
        [第9位IF]
        控制是否響應外中斷,如果為1則響應,為0則不響應,STI指令能將其設為1,CLI指令設為0
        [第10位DF]
        給一些指令用的...
        [第11位OF]
        溢出標志,計算結果如果產生溢出則OF=1否則OF=0
        溢出實例:
        mov ah,FFh
        add ah,FFh
        計算結果大于ah所能存放的最高數值,則會溢出

        本章結束..



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 阳山县| 垫江县| 金溪县| 台东县| 林甸县| 华蓥市| 贵溪市| 古交市| 上虞市| 民县| 渭源县| 疏勒县| 漳浦县| 恩施市| 新田县| 丹江口市| 浦县| 将乐县| 栖霞市| 崇明县| 太保市| 平泉县| 剑川县| 田阳县| 扶余县| 剑河县| 南召县| 新闻| 辰溪县| 克什克腾旗| 孝义市| 尼勒克县| 长垣县| 三江| 漯河市| 天等县| 石屏县| 镇安县| 孟连| 时尚| 灌云县|