8086彙編 端口 以及外部中斷

在PC機系統中,和CPU經過總線鏈接的芯片除了各類存儲器外,還有如下3種芯片:接口

1,各類接口卡(網卡,顯卡)上的接口芯片內存

2,主板上的接口芯片,CPU經過訪問他們對部分外設進行訪問請求

3,其餘芯片,用來儲存相關的系統信息程序

這些芯片中,都是一組能夠由CPU讀寫的寄存器。這些芯片上的寄存器就是端口。總結

從CPU角度來看,將這些寄存器(三組芯片中的)都當作端口,對它們進行統一編址,從而創建了一個統一的端口地址空間,每一個端口在空間中都有一個地址。cpu

在PC中,端口地址範圍爲0~65535,能夠最多定義64K個不一樣的端口。數據

CPU能夠直接讀寫三個地方上的數據:端口

CPU內部的寄存器、內存單元、端口鍵盤

 

 

因爲端口是一個獨立的存在,他們有他們的端口地址空間,因此對端口的訪問,咱們不能仍是經過mov這樣的指令了,咱們經過 in , out 指令。好比:字符

in al, 60h; 就是咱們從60h這個端口讀取一個字節到al寄存器中去。

注意:只能使用al,或者ax從儲存從端口獲取的內容。

 

 

shl , shr 指令:

移位,進位的那位儲存在CF中,補位爲0

 

 

如今考慮一個問題,好比咱們經過鍵盤輸入一個字符進入PC,那麼CPU是如何知道咱們輸入了的呢?

這裏就是中斷起做用了,CPU在每執行完一個指令後,會檢查IF標誌位,若是是1,則代表了有一個外部中斷來了,而後cpu開始處理外部中斷了,這和前面講的處理內部中斷同樣,這也爲何前面講的要將IF清0了。

咱們總結下,當一個外設接收到一個數據了,它將這個數據存放在一個寄存器裏,也就是端口中,而後外設發送中斷請求,CPU判斷中斷源,並進行相應的中斷處理。最後咱們再中斷處理程序中,去端口獲取這個數據,而後處理,最後返回。

相關文章
相關標籤/搜索