1.IO端口和寻址
回到顶部
CPU为了访问IO接口控制器上的数据和状态信息,需要首先找到地址。这种地址称为IO端口地址,简称端口。
通常一个IO控制器包含访问数据的数据端口、输出命令的控制端口和访问控制器执行状态的状态端口。
端口地址一般有两种:统一编址和独立编址。
端口统一编址是把IO控制器的端口地址归入内存地址空间范围内,这种编址方式也称为存储器映射编址。
CPU使用访问内存的指令访问端口,端口操作与内存操作一样。
端口独立编址是把IO控制器的地址空间单独作为一个独立的地址空间,称为IO地址空间。
每个端口都有一个对应的IO地址,使用专门的IO指令来访问IO端口。
IBM PC及其兼容机主要使用独立编址方式,采用一个独立的IO地址空间对控制设备中的寄存器进行寻址和访问。
使用ISA总线结构的传统PC机IO地址空间范围是0x000-0x3FF,有1024个IO端口地址可供使用。
各控制器和控制卡所默认分配使用的端口地址范围见下表:传统PC机IO地址空间分配
传统PC机IO地址空间分配
端口地址范围
分配说明
0x000-0x01f
8237A DMA控制器1
0x020-0x03f
8259A可编程中断控制器1
0x040-0x05f
8253/8254|A 定时计数器
0x060-0x06f
8042键盘控制器
0x070-0x07f
访问CMOS RAM/实时时钟RTC(Real Time Clock)端口
0x080-0x09f
DMA页面寄存器访问端口
0x0a0-0x0bf