I/O端口和寻址

来源:互联网 发布:windows软件包2015 编辑:程序博客网 时间:2024/05/16 14:13

2.2.1 I/O端口和寻址
http://book.51cto.com/art/200812/102818.htm
2.2  I/O端口寻址和访问控制方式
2.2.1  I/O端口和寻址
CPU为了访问I/O接口控制器或控制卡上的数据和状态信息,需要首先指定它们的地址。这种地址就称为I/O端口地址或者简称端口。通常,一个I /O控制器包含访问数据的数据端口、输出命令的命令端口和访问控制器执行状态的状态端口。端口地址的设置方法一般有两种:统一编址和独立编址。
端口统一编址的原理是把I/O控制器中的端口地址归入存储器寻址地址空间范围内。因此这种编址方式也称为存储器映像编址。CPU访问一个端口的操作与访问内存的操作一样,也使用访问内存的指令。端口独立编址的方法是把I/O控制器和控制卡的寻址空间单独作为一个独立的地址空间对待,称为I/O地址空间。每个端口有一个I/O地址与之对应,并且使用专门的I/O指令来访问端口。
IBM PC及其兼容机主要使用独立编址方式,采用了一个独立的I/O地址空间对控制设备中的寄存器进行寻址和访问。使用ISA总线结构的传统PC,其I/O地址空间范围是0x000~0x3FF,有1024个I/O端口地址可供使用。各个控制器和控制卡所默认分配使用的端口地址范围见表2-1。关于这些端口的使用和编程方法将在后面具体涉及相关硬件时再详细进行说明。
另外,IBM PC也部分地使用了统一编址方式。例如,CGA显示卡上显示内存的地址就直接占用了存储器地址空间0xB800~0xBC00范围。因此若要让一个字符显示在屏幕上,可以直接使用内存操作指令往这个内存区域执行写操作。



I/O端口功能表 

——————————————————————————— 
I/O地址 功能、用途 
——————————————————————————— 
0    DMA通道0,内存地址寄存器(DMA控制器1(8237)) 
1    DMA通道0, 传输计数寄存器 
2    DMA通道1,内存地址寄存器 
3    DMA通道1, 传输计数寄存器 
4    DMA通道2,内存地址寄存器 
5    DMA通道2, 传输计数寄存器 
6    DMA通道3,内存地址寄存器 
7    DMA通道3, 传输计数寄存器 
8    DMA通道0-3的状态寄存器 
0AH    DMA通道0-3的屏蔽寄存器 
0BH    DMA通道0-3的方式寄存器 
0CH    DMA清除字节指针 
0DH    DMA主清除字节 
0EH    DMA通道0-3的清屏蔽寄存器 
0FH    DMA通道0-3的写屏蔽寄存器 
19H   DMA起始寄存器 
20H-3FH 可编程中断控制器1(8259)使用 
40H   可编程中断计时器(8253)使用,读/写计数器0 
41H   可编程中断计时器寄存器 
42H   可编程中断计时器杂项寄存器 
43H   可编程中断计时器,控制字寄存器 
44H   可编程中断计时器,杂项寄存器(AT) 
47H   可编程中断计时器,计数器0的控制字寄存器 
48H-5FH 可编程中断计时器使用 
60H-61H 键盘输入数据缓冲区 
61H   AT:8042键盘控制寄存器/XT:8255输出寄存器 
62H   8255输入寄存器 
63H   8255命令方式寄存器 
64H   8042键盘输入缓冲区/8042状态 
65H-6FH 8255/8042专用 
70H   CMOS RAM地址寄存器 
71H   CMOS RAM数据寄存器 
80H   生产测试端口 
81H   DMA通道2,页表地址寄存器 
82H   DMA通道3,页表地址寄存器 
83H   DMA通道1,页表地址寄存器 
87H   DMA通道0,页表地址寄存器 
89H   DMA通道6,页表地址寄存器 
8AH   DMA通道7,页表地址寄存器 
8BH   DMA通道5,页表地址寄存器 
8FH   DMA通道4,页表地址寄存器 
93H-9FH DMA控制器专用 
0A0H   NM1屏蔽寄存器/可编程中断控制器2 
0A1H   可编程中断控制器2屏蔽 
0C0H   DMA通道0,内存地址寄存器(DMA控制器2(8237)) 
0C2H   DMA通道0, 传输计数寄存器 
0C4H   DMA通道1,内存地址寄存器 
0C6H   DMA通道1, 传输计数寄存器 
0C8H   DMA通道2,内存地址寄存器 
0CAH   DMA通道2, 传输计数寄存器 
0CCH   DMA通道3,内存地址寄存器 
0CEH   DMA通道3, 传输计数寄存器 
0D0H   DMA状态寄存器 
0D2H   DMA写请求寄存器 
0D4H   DMA屏蔽寄存器 
0D6H   DMA方式寄存器 
0D8H   DMA清除字节指针 
0DAH   DMA主清 
0DCH   DMA清屏蔽寄存器 
0DEH   DMA写屏蔽寄存器 
0DFH-0EFH 保留 
0F0H-0FFH 协处理器使用 
100H-16FH保留 
170H   1号硬盘数据寄存器 
171H   1号硬盘错误寄存器 
172H   1号硬盘数据扇区计数 
173H   1号硬盘扇区数 
174H   1号硬盘柱面(低字节) 
175H   1号硬盘柱面(高字节) 
176H   1号硬盘驱动器/磁头寄存器 
177H   1号硬盘状态寄存器 
1F0H   0号硬盘数据寄存器 
1F1H   0号硬盘错误寄存器 
1F2H   0号硬盘数据扇区计数 
1F3H   0号硬盘扇区数 
1F4H   0号硬盘柱面(低字节) 
1F5H   0号硬盘柱面(高字节) 
1F6H   0号硬盘驱动器/磁头寄存器 
1F7H   0号硬盘状态寄存器 
1F9H-1FFH保留 
200H-20FH游戏控制端口 
210H-21FH扩展单元 
278H   3号并行口,数据端口 
279H   3号并行口,状态端口 
27AH   3号并行口,控制端口 
2B0H-2DFH保留 
2E0H   EGA/VGA使用 
2E1H   GPIP(0号适配器) 
2E2H   数据获取(0号适配器) 
2E3H   数据获取(1号适配器) 
2E4H-2F7H保留 
2F8H   2号串行口,发送/保持寄存器(RS232接口卡2) 
2F9H   2号串行口,中断有效寄存器 
2FAH   2号串行口,中断ID寄存器 
2FBH   2号串行口,线控制寄存器 
2FCH   2号串行口,调制解调控制寄存器 
2FDH   2号串行口,线状态寄存器 
2FEH   2号串行口,调制解调状态寄存器 
2FFH   保留 
300H-31FH原形卡 
320H   硬盘适配器寄存器 
322H   硬盘适配器控制/状态寄存器 
324H   硬盘适配器提示/中断状态寄存器 
325H-347H保留 
348H-357H DCA3278 
366H-36FH PC网络 
372H    软盘适配器数据输出/状态寄存器 
375H-376H 软盘适配器数据寄存器 
377H    软盘适配器数据输入寄存器 
378H    2号并行口,数据端口 
379H    2号并行口,状态端口 
37AH    2号并行口,控制端口 
380H-38FH SDLC及BSC通讯 
390H-393H Cluster适配器0 
3A0H-3AFH BSC通讯 
3B0H-3B H MDA视频寄存器 
3BCH    1号并行口,数据端口 
3BDH    1号并行口,状态端口 
3BEH    1号并行口,控制端口 
3C0H-3CFH EGA/VGA视频寄存器 
3D0H-3D7H CGA视频寄存器 
3F0H-3F7H 软盘控制器寄存器 
3F8H    1号串行口,发送/保持寄存器(RS232接口卡1) 
3F9H    1号串行口,中断有效寄存器 
3FAH    1号串行口,中断ID寄存器 
3FBH    1号串行口,线控制寄存器 
3FCH    1号串行口,调制解调控制寄存器 
3FDH    1号串行口,线状态寄存器 
3FEH    1号串行口,调制解调状态寄存器 
3FFH    保留
 

0 0
原创粉丝点击