一、8255是干什麼的
8255是一塊晶元,用於管理CPU與外設之間數據的輸入和輸出。
二、8255可以怎麼管理輸入輸出
8255有三個埠:A口,B口和C口。它們的長度都是8位的。都可以用作數據的輸入或輸出。
8255有三種工作方式來管理輸入輸出:方式0、方式1和方式2.
1.方式0——基本輸入/輸出方式
一個輸入/輸出過程的最簡單形式是這樣的:以輸入為例,首先設定8255埠的工作狀態為輸入,數據一來到埠,就被傳送給CPU。
當然並不是所有的輸入輸出過程都這么簡單。例如,有些時候只有當外設處於可以接受數據的就緒狀態時,才可以把數據發送給外設。那麼這時就需要把外設的狀態輸出端輸入進8255晶元,判斷這個端的狀態從而決定是否發送數據給這個外設。——這稱為查詢工作方式。8255的C口就可以實現這個功能。後面我們可以看到具體的例子。
2.方式1——選通輸入/輸出方式
前面提到,有些時候只有當外設處於可以接受數據的就緒狀態時,才可以把數據發送給外設。這樣就產生了一個問題:CPU源源不斷地向8255傳數據,外設沒工夫接。雖然外設可以通過C口告知8255,CPU再檢測C口狀態決定是否傳送數據。但CPU業務繁忙,哪有功夫等你這個大爺一樣的外設?所以更好的解決辦法,就要用到中斷的概念,也就是說:當外設可以接收/發送數據時,通過8255向CPU發送一個中斷信號。CPU接收到中斷信號後,中斷當前正在執行的程序,進行輸入輸出操作,完成後再返回現場繼續原先的程序。——這稱為中斷工作方式。這一系列控制信號還是通過C口來傳送的。
❷ 用匯編語言編寫七段數碼管顯示1~9,用8255A介面晶元,用中斷方式控制。
在進行實驗時,我們使用了匯編語言編寫了一段程序,用於在七段數碼管上顯示1至9的數字。程序中,我們將數據段中的埠地址進行了調整,以匹配計算機中8255A介面晶元的埠地址。從鍵盤接收數字後,程序會將其轉換為相應的段碼,並在數碼管上進行顯示。
首先,程序定義了數據段,並將埠地址進行了相應的設置。ioport代表8255A晶元的埠地址,io8255a和io8255b分別代表A口和B口的地址。同時,還定義了一個包含10個段碼的數組led,用於存儲0至9的七段數碼顯示代碼。數組mesg1則用於顯示輸入提示信息。
程序從鍵盤接收用戶輸入的數字,並將其與0和9進行比較,以確保輸入值在有效范圍內。然後,程序將輸入的ASCII碼減去30H,得到相應的十進制數值,並將其與段碼數組進行索引匹配。最後,通過8255A的A口輸出相應的段碼,實現數碼管的顯示。
在程序中,我們使用了中斷方式來控制數碼管的顯示過程。在輸入數字後,程序會不斷循環,直到用戶再次輸入數字。當輸入無效數字時,程序會繼續等待有效的輸入。當用戶輸入有效數字後,程序會將其轉換為相應的段碼,並在數碼管上進行顯示。
此外,程序還通過設置8255A的A口為輸出方式,確保數碼管能夠正確顯示輸入的數字。在輸出段碼時,程序通過8255A的A口將段碼發送到數碼管,實現數字的顯示。
在程序的最後,通過設置AH為4CH並調用INT 21H,返回到DOS系統,結束程序的執行。
整個程序通過匯編語言實現,使用了中斷方式來控制數碼管的顯示過程,同時對輸入數字進行了有效性驗證。通過這種方式,可以實現1至9數字的正確顯示。