輸入/輸出結構 80386雖然比8086的地址寬度增加了12位,但是可尋址的I/0端口空間並沒有增加,還是64K個(字節型端口)。原因在于,80386的輸入/輸出指令仍然採用直接尋址和16位的DX間接尋址兩種。直接尋址支持0~255間的端口尋址;DX間接尋址可尋址O~65 535之間的端口地址。然而80386的輸入/輸出功能還是有所增強,增加了支持32位操作的輸入/輸出指令。下面4條指令是典型的32位輸入/輸出指令的例子: IN EAX.40H IN EAX.DX OUT 80H.EAX OUT DX.EAX 第一條指令中的目的操作數是EAX,所以機器將其理解為32位操作指令,將地址40H理解為一個雙字端口(32位端口)地址。所謂雙字端口,實際上是由4個相連的字節型端口組成的。對這條指令來說,它們的地址分別為:40H、41H、42H和43H。該指令的功能是讀出這4個字節型端口的內容送至EAX中(低地址端口的內容被送到EAx的低位部分,高地址端口的內容被送到EAX的高位部分)。如果32位輸入/輸出指令中給出的地址位于雙字邊界(即為4的倍數,如上例),則執行時只需一個總線週期。如果跨越了雙字邊界,則需要兩個或更多的總線週期。當然,為了提高機器的效率,32位輸入/輸出指令的地址一般應安排為雙字地址。 和存儲器系統類似,在具體構成輸入/輸出的物理組織時,也需要考慮該系統對外的數據寬度。圖7.42表示了80386系統中I/O端口的物理組織。

由圖可看出,64 K個字節型端口物理上被分成4個16 K個字節型端口,用BE3~BE0分別作為每一個的選擇信號。顯然,這種連接可實現8位、16位或32位端口操作。
|