1.
可程式設計標誌暫存器在記憶體中的對映如下:
記憶體對映位址
暫存器名稱
0xffc0 0700
fio_flag_d
0xffc0 0704
fio_flag_c
0xffc0 0708
fio_flag_s
0xffc0 070c
fio_flag_t
0xffc0 0710
fio_maska_d
0xffc0 0714
fio_maska_c
0xffc0 0718
fio_maska_s
0xffc0 071c
fio_maska_t
0xffc0 0720
fio_maskb_d
0xffc0 0724
fio_maskb_c
0xffc0 0728
fio_maskb_s
0xffc0 072c
fio_maskb_t
0xffc0 0730
fio_dir
0xffc0 0734
fio_polar
0xffc0 0738
fio_edge
0xffc0 073c
fio_both
0xffc0 0740
fio_inen
在這裡有乙個不明白的地方是:明明所有的暫存器都是
16位的,兩個位元組就可以了,為什麼所有的都佔了四個位元組?難道是用於擴充套件,避免以後出現
32位?
由此可以看出,可程式設計標誌暫存器大致可以分為如下幾組: 組別
暫存器名稱
第一組fio_flag_d
fio_flag_c
fio_flag_s
fio_flag_t
第二組fio_maskx_d
fio_maskx_c
fio_maskx_s
fio_maskx_t
第三組fio_dir
fio_polar
fio_edge
fio_both
fio_inen
那麼這幾組暫存器有何關係,它們又是如何組合工作的呢?
所有的暫存器每一位都對應乙個
pf引腳。
首先我們來介紹下
d,c,s,t
所分別代表的意義:
d: 為資料,當對它進行寫時,指定各個引腳的狀態。當對它進行讀時,返回的是各個引腳的值。
c,s,t
主要用於以下兩種情況:(1
)置位,清除或者觸發每個輸出引腳的狀態。(2
)清除從各個輸入引腳捕獲到的鎖存中斷狀態。
有一點沒有搞清楚的是,好像
fio_maskx_d
,fio_maskx_s
暫存器都能設定使能中斷。
fio_maskx_d
也可以像
fio_maskx_c
一樣清除中斷。
fio_dir1:輸出0
:輸入不過當為輸入的時候,必須使能緩衝,也即
fio_inen
的相應位要置1.
fio_polar
,fio_edge
,fio_both
都是用在輸入的情況下,當為輸出時,沒有任何意義。那麼它們在輸入的時候,到底是用來幹什麼的呢?當為輸入的時候,它們的配置組合是用來解釋從各個引腳讀出來的1和
0到底代表個什麼東西。
fio_polar0
:高電平或上公升沿
1:低電平或下降沿
fio_edge
0:電平敏感
1:邊沿敏感
邊沿敏感和電平敏感的區別:
當被配置為邊沿敏感時,從
d,s,c,t
這些暫存器讀來的值是具有粘性的。也就是說除非通過使用者**進行清除,否則這些值一旦被設定就不會發生改變。而被設定為電平敏感的引腳,在每個時鐘週期都會對引腳的狀態進行檢查,一旦引腳原先的電平發生了變化,讀出來的值也會相應的發生變化。
fio_both
主要是用來使能在兩個邊沿(上公升沿和下降沿)產生中斷,當然前提是
fio_edge
被設定為邊沿敏感,並且當前為輸入。
0:單個邊沿
1:兩個邊沿
現在我們來看一下它們組合起來的效果:
fio_polar
fio_edge
fio_both
mmr設定的效果0
0 x
從這裡可以看出引腳是電平敏感的,
fio_both
無效,所以讀出來的值為
1代表高電平,
0代表低電平0
1 0
單個邊沿週期敏感。上公升沿為
0,下降沿為1
1 0
x 電平敏感。低電平為
1,高電平為
0,剛好和第一項相反1
1 0
下降沿為
1,上公升沿為
0,剛好和第二項相反x
1 1
兩個邊沿敏感,不管是上公升沿還是下降沿都讀為1
標誌暫存器df 標誌暫存器
cpu內部的暫存器中,有一種特殊的暫存器具有以下三種作用。用來儲存相關指令的某些執行結果 用來為cpu執行相關指令提供行為依據 用來控制cpu的相關工作方式 這種特殊的暫存器在8086cpu種,被稱為標誌暫存器 flag 8086cpu的標誌暫存器有16位,其中儲存的資訊通常被稱為程式狀態字 psw...
學習 標誌暫存器
前言 跟著shark恆老師一步一步來學習的,畢竟自己完全是0基礎,就不直接追求原理了,自己能先記錄就好,如果能理解其中的原理那更好 of標誌暫存器 溢位標誌位 為1的時候為溢位,帶符號數的運算結果超出有限字長的表示範圍的標誌 我直接修改當前的eax暫存器的十六進製制為0x7ffffffff,因為這個...
暫存器,標誌暫存器
涉及硬體傳輸資料的,往往包含以下內容 1.資料傳輸引腳 資料放 2.控制引腳 怎麼控制 3.狀態引腳 結果如何 暫存器相當於cpu內部的儲存單元,可能是連續排列,相當於 c語言中的陣列。一 8個通用暫存器 16 bit accumulate axah alr0 count cxch clr1 dat...