電腦控制系統中,儲存空間和I/O介面都接到CPU的同一資料匯流排上。當CPU與儲存空間和I/O介面進行資料交換時,就涉及到CPU與哪一個I/O介面晶片的哪一個連接埠聯絡,還是從儲存空間的哪一個單元聯絡的地址選擇問題,即定址問題。這涉及I/O介面的編址方式,通常有兩種編址方式,一種是I/O介面與儲存空間統一編址,另一種是I/O介面獨立編址。
一、I/O介面獨立編址方式
這種編址方式是將儲存空間地址空間和I/O介面地址空間分開設定,互不影響。設有專門的輸入指令(IN)和輸出指令(OUT)來完成I/O操作,例如Z80微處理器的I/O介面是按獨立編址方式的,它利用MREQ和IORQ訊號來區分是訪問儲存空間地址空間還是I/O介面地址空間,利用讀、寫操作訊號、區分是讀操作還是寫操作。儲存空間的地址解碼使用16位地址(A0~A15),可以定址64KB的記憶體空間,而I/O介面的地址解碼僅使用地址匯流排的低8位(A0~A7),可以定址256個I/O連接埠地址空間。
8086微處理器的I/O介面也是屬於獨立編址方式的。它允許有64K個8位的I/O連接埠,兩個編號相鄰的8位連接埠可以組合成一個16位連接埠。指令系統中既有訪問8位連接埠的輸入輸出指令,也有訪問16位連接埠的輸入輸出指令。
8086輸入輸出指令可以分為兩大類:一類是直接的輸入輸出指令,(如INAL,55H;OUT70H,AX),另一類是間接的輸入輸出指令(如INAX,DX;OUTDX,AL),在執行間接輸入輸出指令前,必須在DX寄存器中先設定好訪問連接埠號碼。
二、I/O介面與儲存空間統一編址方式
這種編址方式不區分儲存空間地址空間和I/O介面地址空間,把所有的I/O介面的連接埠都當作是儲存空間的一個單元對待,每個介面晶片都安排一個或幾個與儲存空間統一編號的地址號。也不設專門的輸入/輸出指令,所有傳送和訪問儲存空間的指令都可用來對I/O介面操作。M6800和6502微處理器以及Intel51系列的51、96系列單片機就是採用I/O介面與儲存空間統一編址的。
兩種編址方式有各自的優缺點,獨立編址方式的主要優點是記憶體位址空間與I/O介面地址空間分開,互不影響,解碼電路較簡單,並設有專門的I/O指令,所編程式易於區分,且執行時間短,快速性好。其缺點是只用I/O指令訪問I/O連接埠,功能有限且要採用專用I/O周期和專用的I/O控制線,使微處理器複雜化。統一編址方式的主要優點是訪問記憶體的指令都可用於I/O操作,資料處理功能強;同時I/O介面可與儲存空間部分公用解碼和控制電路。其缺點是:I/O介面要佔用儲存空間地址空間的一部分;因不用專門的I/O指令,程式中較難區分I/O操作。
I/O介面的編址方式是由所選定的微處理器決定了的,介面設計時應按所選定的處理器所規定的編址方式來設計I/O介面地址解碼器。但是獨立編址的微處理器的I/O介面也可以設計成統一編址方式使用,如在8086系統中,就可通過硬體將I/O介面的連接埠與儲存空間統一編址。這時應在訊號或者號有效同時,使M/訊號處於高電平,通過外部邏輯組合電路的組合,產生對儲存空間的讀、寫訊號,CPU就可以用功能強、使用靈活方便的各條訪內指令來實現對I/O連接埠的讀、寫操作。