5.1.2 I/O端口地址

5.1.2 I/O端口地址

1.I/O端口地址

为了存取接口电路上的寄存器,系统给这些寄存器分配了专门的存取地址,这样的地址称为I/O端口地址。

在某些微型机上,I/O端口地址和存储单元地址统一编址。这相当于把I/O接口(设备)视为一个或几个存储单元,利用存取内存单元的指令就可存取接口上的寄存器。但这会减少原本就有限的存储空间,同时由于访问内存的指令一般超过2字节,从而延长了外部设备与处理器进行数据交换的时间。

以Intel的80x86家族处理器为CPU的系统中,I/O端口地址和存储单元的地址是各自独立的,分占两个不同的地址空间。8086/8088提供的I/O端口地址空间达64K,因而可接64K个8位端口,或可接32K个16位端口。但实际上,PC及其兼容机一般只使用0~3FFH之间的I/O端口地址,只占整个I/O端口地址空间的很小一部分。

2.I/O指令

由于8086/8088的I/O端口地址和内存单元地址是独立的,所以要用专门的I/O指令来存取接口电路上的寄存器,也就是说要用专门的I/O指令进行输入/输出。本书第2章已对I/O指令功能、格式进行讲解,指令格式请参考第2章有关内容。