第七章I/0程序设计 7.1I/0接口 7.2I/0操作 7.3文件I/0 888
第七章 I/O程序设计 7.1 I/O接口 7.2 I/O 7.2 I/O操作 7.3文件I/O 1
输入/输出(I/0)是CPU对外设进行控制和数据交换的过 程。微型计算机由主机和外设两部分组成,主机包括 微处理器(CPU)、存储器和I/0接口。外部设备又被 称为I/0设备,简称外设。I/0设备与I/0接口相连, 是微机的重要组成部分。与存储器相比,外设有其自 身的特点。存储器功能比较单一,体现在CPU对指定 地址的存储单元进行读写操作上,而外设的功能多种 多样,每一种外设的控制方式和数据交换都各不相同。 在操作系统中,需要为不同的外部设备配置不同的设 备驱动程序
输入/输出(I/O)是CPU对外设进行控制和数据交换的过 程 。微型计算机由主机和外设两部分组成,主机包括 微处理器(CPU)、存储器和I/O接口。外部设备又被 称为I/O设备,简称外设 。I/O设备与I/O接口相连, 是微机的重要组成部分。与存储器相比,外设有其自 身的特点 。存储器功能比较单一 存储器功能比较单一,体现在CPU对指定 地址的存储单元进行读写操作上,而外设的功能多种 多样,每一种外设的控制方式和数据交换都各不相同 。 在操作系统中,需要为不同的外部设备配置不同的设 备驱动程序 。 2
7.1I/0接口 CPU与内存可以直接进行数据交换,但CPU与 外设之间实现信息交换,必须通过接口电 路中的I/0端口来进行。每一个外设都有其 特定的I/0端口。CPU通过I/0指令对端口进 行读、写操作
7.1 I/O 7.1 I/O接口 CPU与内存可以直接进行数据交换,但CPU与 外设之间实现信息交换,必须通过接口电 路中的I/O端口来进行。每一个外设都有其 特定的I/O端口。CPU通过I/O指令对端口进 行读、写操作。 3
7.1.1接口、端口、端口地址 接口电路是主机与外设的通信桥梁,接口电路有时简称为接 口。接口是用于实现主机与外设传输信息的通道,传输信 息的种类有数据信息、控制信息和状态信息。由于外设的 种类繁多、速度相差很大,接口电路中必须设置传输信息 所需要的缓冲寄存器。这些缓冲寄存器依据所传输信息的 种类被分为数据缓冲寄存器、控制缓冲寄存器和状态缓冲 寄存器。 通常把I/O接口电路中能被CPU直接访问的寄存器取名为端口, 端口分为三类:数据端口、控制端口和状态端口。数据端 口有两种,即输出数据端口和输入数据端口。数据端口用 于实现CPU与外设之间的数据交换,所以有两种方向。控。 制端口是用于实现CPU对外设的控制,所以它只能是输出 状态端口是用于反馈外设的状态信息给CPU的,所以它只 能是输入
7.1.1 接口、端口、端口地址 接口电路是主机与外设的通信桥梁,接口电路有时简称为接 口。接口是用于实现主机与外设传输信息的通道,传输信 息的种类有数据信息 、控制信息和状态信息 。由于外设的 种类繁多、速度相差很大,接口电路中必须设置传输信息 所需要的缓冲寄存器 。这些缓冲寄存器依据所传输信息的 种类被分为数据缓冲寄存器、控制缓冲寄存器和状态缓冲 寄存器 。 通常把I/O接口电路中能被CPU直接访问的寄存器取名为端口, 端口分为三类:数据端口、控制端口和状态端口。数据端 口有两种,即输出数据端口和输入数据端口。数据端口用 于实现CPU与外设之间的数据交换,所以有两种方向。控 制端口是用于实现 制端口是用于实现CPU对外设的控制,所以它只能是输出 所以它只能是输出 。 状态端口是用于反馈外设的状态信息给CPU的,所以它只 能是输入 。 4
和存储器一样,每一个端口都有一个地址,叫做端口地址 又称为端口号。端口地址是端口位置的二进制编码,CPU 通过这些端口编码向外部设备发送命令、读取状态、发送● 数据、接收数据等。 每一个端口的宽度为8位,可容纳一个字节,端口地址是按 字节编排的。 CPU访问I/0端口有三种方法: (1)用I/0指令实现信息传输, (2)通过BI0S中断调用实现信息传输; (3)通过D0S中断调用实现信息传输。 BI0S中断调用是更低级的中断调用,它是与硬件相关的, ●d 兼容性较差,但速度较快。D0S中断调用是较高级的中断 调用,它与硬件无直接关系,兼容性较好,但速度较慢, 大多数情况下其内部会再调用BIOS中断调用。 888 5
和存储器一样,每一个端口都有一个地址 每一个端口都有一个地址,叫做端口地址, 又称为端口号。端口地址是端口位置的二进制编码,CPU 通过这些端口编码向外部设备发送命令、读取状态、发送 数据、接收数据等。 每一个端口的宽度为8位,可容纳一个字节,端口地址是按 字节编排的。 CPU访问I/O端口有三种方法: (1)用I/O指令实现信息传输 指令实现信息传输; (2)通过BIOS中断调用实现信息传输; (3)通过DOS中断调用实现信息传输。 BIOS中断调用是更低级的中断调用,它是与硬件相关的, 兼容性较差,但速度较快。DOS中断调用是较高级的中断 中断调用是较高级的中断 调用,它与硬件无直接关系,兼容性较好,但速度较慢, 大多数情况下其内部会再调用BIOS中断调用。 5
接口、端口、外设在微机中的连接如图7.1所示。 Memory 外设 CB 接口电路 P DB 数据 Input 数据端口 U 控制 Output AB 控制端口 状态 Storage 状态端口 图7.1主机、外设、接口电路连接示意图 6
接口、端口、外设在微机中的连接如图 外设在微机中的连接如图7.1所示。 CB Memory C 外设 数据端口 DB C 接口电路 P 数据 Input 数据端口 AB 控制端口 U 控制 状态 Output Storage 状态端口 图7.1 主机、外设、接口电路连接示意图 6
7.1.21/0接口的硬件分类 按照电路和设备的复杂程度,[/0接口的硬件主要分。 成两大类。 1.I/0接口芯片 主板上的I/0接口芯片,大多是可编程的大规模集成电路, 能够完成相应的接口操作,如定时器、计数器、中断控制 器、DMA控制器、并行接口等。在PC系列微机中,这些接 口芯片是由8259,8237A等芯片组成。随着集成电路技术 的发展,目前PC机系统主板上的所有接口功能都已集成在● 一片或几片大规模集成电路芯片中,称为芯片组。 8
7.1.2 I/O 7.1.2 I/O接口的硬件分类 按照电路和设备的复杂程度,I/O接口的硬件主要分 成两大类。 1.I/O接口芯片 主板上的I/O接口芯片,大多是可编程的大规模集成电路, 能够完成相应的接口操作,如定时器、计数器、中断控制 器、DMA控制器、并行接口等。在PC系列微机中,这些接 口芯片是由8259,8237A等芯片组成。随着集成电路技术 的发展,目前PC机系统主板上的所有接口功能都已集成在 一片或几片大规模集成电路芯片中,称为芯片组。 7
2.I/0接口卡 这些接口控制卡是由若干个集成电路按一定的逻辑结构组装 而成的接口部件,它们或直接集成在电脑主板上,或制成 插件安装在系统总线扩展槽上。按照所连接的外部设备控 制的难易程度,该接口卡的核心部件或为一般的接口芯片 或为微处理器。凡安装微处理器的接口卡通常称为智能接 口卡,这种卡上具有一片EPROM芯片,芯片内固化了控制 程序,如硬盘驱动器的接口控制卡。 ● 889
2.I/O接口卡 这些接口控制卡是由若干个集成电路按一定的逻辑结构组装 而成的接口部件,它们或直接集成在电脑主板上,或制成 插件安装在系统总线扩展槽上。按照所连接的外部设备控 制的难易程度,该接口卡的核心部件或为一般的接口芯片 或为微处理器。凡安装微处理器的接口卡通常称为智能接 口卡,这种卡上具有一片EPROM芯片,芯片内固化了控制 程序,如硬盘驱动器的接口控制卡。 8
7.1.31/0端口的地址分配 一个接口中可能有多个端口,一个计算机系统内又有很多个 接口,所以通过端口传输信息首先需要区分端口,区分端 口可通过端口地址不同来区分。既然I/0接口分成I/0接口 芯片和I/0接口控制卡两大类,那么系统对I/0空间的布局 也分成两部分,总共1024个端口。前256个端口(000 0FFH)专供I/0接口芯片使用,后756个端口(100-3FFH) 专为I/0接口卡使用。 对于一个具体的计算机而言,I/0端口地址实际上只用了其 中很小的一部分,因为一个系统中只有十几个外部设备和 大容量存储设备与主机相连。对不同型号的计算机及其接 口,I/0端口的编号有时也不完全相同。 08888 9
7.1.3 I/O 7.1.3 I/O端口的地址分配 一个接口中可能有多个端口,一个计算机系统内又有很多个 接口,所以通过端口传输信息首先需要区分端口,区分端 口可通过端口地址不同来区分 口可通过端口地址不同来区分。既然I/O接口分成I/O接口 芯片和I/O接口控制卡两大类,那么系统对I/O空间的布局 也分成两部分,总共1024个端口。前256个端口(000- 0FFH)专供I/O接口芯片使用,后756个端口(100-3FFH) 专为I/O接口卡使用。 对于一个具体的计算机而言,I/O端口地址实际上只用了其 中很小的一部分,因为一个系统中只有十几个外部设备和 大容量存储设备与主机相连。对不同型号的计算机及其接 口,I/O端口的编号有时也不完全相同。 9
表7.1I/0端口地址分配表 /O地址 功能 /O地址 功能 00-0F DMA控制器 2F8-2FE 2号串行口(COM2) 20-3F 可编程中断控制器8259A 320-324 硬盘适配器 40-5F 可编程中断计时器 366-36F PC网路 60-63 8255A PPI 372-377 软盘适配器 70-71 CMOS RAM 378-37A 2号并行口(LPT1打印机) 81-8F DMA页表地址寄存器 380-38F SDLC及BBC通信 93-9F DMA控制器 390-393 C1 us t er适配器 A0-A1 可编程中断控制器 3A0-3AF BBC通信 C0-CE DMA通道·内存/传输地址寄存器 3B0-3BF MDA视频寄存器 F0-FF 协处理器 3BC-3BE 1号并行口 ●● 170-1F7 硬盘控制器 3C0-3CF EGANGA视频寄存器 200-20F 游戏控制端口 3D0-3D7 CGA视频寄存器 278-27A 3号并行口(LPT2打印机) 3F0-3F7 软盘控制寄存器 2E0-2E3 EGANGA使用 3F8-3FE 1号串行口(C0M) ● 10
表 7.1 I/O端口地址分配表 I/O地址 功能 I/O地址 功能 00-0F DMA控制器 2F8-2FE 2号串行口(COM2) 20-3F 可编程中断控制器8259A 320-324 硬盘适配器 40 - 5 F 可编程中断计时器 可编程中断计时器 366 -36 F PC网络 60-63 8255A PPI 372-377 软盘适配器 70-71 CMOS RAM 378-37A 2号并行口(LPT1打印机) 81-8F DMA页表地址寄存器 380-38F SDLC及BBC通信 93-9F DMA控制器 390-393 Cluster适配器 A0-A1 可编程中断控制器 3A0-3AF BBC通信 C0-CE DMA通道、内存/传输地址寄存器 3B0-3BF MDA视频寄存器 F0-FF 协处理器 3BC-3BE 1号并行口 170-1F7 硬盘控制器 3C0-3CF EGA/VGA视频寄存器 200-20F 游戏控制端口 3D0-3D7 CGA视频寄存器 278-27A 3号并行口(LPT2打印机) 3F0-3F7 软盘控制寄存器 2E0-2E3 EGA/VGA使用 3F8-3FE 1号串行口(COM) 10