第8章输入输出方法 8,1输入输出的基本概念 8.2无条件方式输入输出 83查询方式输入输出 8.4中断方式输入输出 本章要点
第8章 输入输出方法 8.1 输入输出的基本概念 8.2 无条件方式输入输出 8.3 查询方式输入输出 8.4 中断方式输入输出 本章要点
81输入输出的基本概念 从第2章的图2.1可以看到,计算机的硬件系统由CPU、内 存、外设三大部分构成,它们相互之间通过一组信息传递的公 共通道—总线联系在一起的。CPU和内存构成了计算机的主 机部分,是计算机中的高速设备。而大多数外部设备都是慢速 设备,用来把从主机以外采集到的数据送入主机内部,或者把 主机内的数据传递到外部,外设中的外部存储器还可以存储大 量的数据。那么,CPU作为计算机的核心,它又是如何控制 外设的呢?
8.1 输入输出的基本概念 从第2章的图2.1可以看到,计算机的硬件系统由CPU、内 存、外设三大部分构成,它们相互之间通过一组信息传递的公 共通道──总线联系在一起的。CPU和内存构成了计算机的主 机部分,是计算机中的高速设备。而大多数外部设备都是慢速 设备,用来把从主机以外采集到的数据送入主机内部,或者把 主机内的数据传递到外部,外设中的外部存储器还可以存储大 量的数据。那么,CPU作为计算机的核心,它又是如何控制 外设的呢?
811外设接口 接口:用于把CPU来的控制命令转换成外设的控制信号,把外 设的工作情况转换成CPU可以读取并处理的状态信号。 计算机系统中对外设接口也进行了编号,这个号码称作“外 设端口号”。每一个端口号对应外设接口中的一个存放字节 型数据的元件,称为一个“外设端口”。 个外设接口中往往需要多个外设端口,占据多个外设端口 号。CPU控制外设就是通过从这些外设端口中读取数据以及 向它们发送数据实现的
8.1.1 外设接口 接口:用于把CPU来的控制命令转换成外设的控制信号,把外 设的工作情况转换成CPU可以读取并处理的状态信号。 计算机系统中对外设接口也进行了编号,这个号码称作“外 设端口号” 。每一个端口号对应外设接口中的一个存放字节 型数据的元件,称为一个“外设端口” 。 一个外设接口中往往需要多个外设端口,占据多个外设端口 号。CPU控制外设就是通过从这些外设端口中读取数据以及 向它们发送数据实现的
大多数外设接口从功能上可以分为控制部件、状态部件 和数据部件三大组成部分。 控制部件又称为命令部件,专用于接收来自主机的操作 命令,并转换成对外设的控制信号; 状态部件负责向主机转达外设的当前工作情况; 数据部件是内外数据交换的缓冲器,临时存放需要传递 的数据
大多数外设接口从功能上可以分为控制部件、状态部件 和数据部件三大组成部分。 控制部件又称为命令部件,专用于接收来自主机的操作 命令,并转换成对外设的控制信号; 状态部件负责向主机转达外设的当前工作情况; 数据部件是内外数据交换的缓冲器,临时存放需要传递 的数据
812控制外设的指令 由于8088采取了独立编址方式,就需要有特殊的指令控 制对外设端口的操作。8088系统设计有两条专用指令:ⅠN和 OUT。 【指令格式】INd1,d2 【功能】从d2指明的外设端口中读取1字节或2字节数据, 送到操作数d指出的地方。 【说明】 (1)8088系统限制d,只能是AL或AX。当外设端口号不超 过255时,d操作数可直接写端口号码,是外设的直接寻址 方式;端口号超过255时,必须先把端口号放在DX中,以DX 作为d2操作数,这是外设的间接寻址方式
8.1.2 控制外设的指令 由于8088采取了独立编址方式,就需要有特殊的指令控 制对外设端口的操作。8088系统设计有两条专用指令:IN和 OUT。 【指令格式】IN d1 , d2 【功能】从d2指明的外设端口中读取1字节或2字节数据, 送到操作数d1指出的地方。 【说明】 (1)8088系统限制d1只能是AL或AX。当外设端口号不超 过255时,d2操作数可直接写端口号码, 是外设的直接寻址 方式;端口号超过255时,必须先把端口号放在DX中,以DX 作为d2操作数,这是外设的间接寻址方式
(2)当d1是AL时,该指令从指定的端口中读1字节数据; 当d是AX时,CPU将从d2对应的端口读1字数据到AL,从 下一个端口号读1字节数据到AH,即总共读取16位数据送到 AX中。 【指令格式】OUTd1,d2 【功能】把操作数d2指明的1字节或2字节数据送到d对应 的外设端口中。 说明】 (1)d2只能是AL或AX。当外设端口号不超过25时,d1 操作数可直接写端口号码;端口号超过255时,必须先把端 口号放在DX中,以DX作为d操作数
(2)当d1是AL时,该指令从指定的端口中读1字节数据; 当d1是AX时,CPU将从d2对应的端口读1字节数据到AL,从 下一个端口号读1字节数据到AH,即总共读取16位数据送到 AX 中。 【指令格式】OUT d1 , d2 【功能】把操作数d2指明的1字节或2字节数据送到d1对应 的外设端口中。 【说明】 (1)d2只能是AL或AX。当外设端口号不超过255时,d1 操作数可直接写端口号码;端口号超过255时,必须先把端 口号放在DX中,以DX作为d1操作数
(2)当d2是AL时,该指令把AL中的8位数据送往d1指 定的外设端口;当d2,是AX时,该指令把AL中的8位数据送 到d1对应的端口,把AH中的8位数据送往下一端口,即把 16位数据送到d1对应的端口及下一端口中
(2)当d2是AL时,该指令把AL中的8位数据送往d1指 定的外设端口;当d2是AX时,该指令把AL中的8位数据送 到d1对应的端口,把AH中的8位数据送往下一端口,即把 16位数据送到d1对应的端口及下一端口中
【例8.1】说明下面各指令或程序段的功能。 (1) MOV DX, 61H IN ALDX (2)MOV BX, 61H MOV ALIBXI (3)OUT 2IH,AL (4)MOV SL21H MOv[S耵,AL
【例8.1】说明下面各指令或程序段的功能。 (1)MOV DX,61H IN AL,DX (2)MOV BX,61H MOV AL,[BX] (3)OUT 21H,AL (4)MOV SI,21H MOV [SI],AL
解】 (1)先把立即数6H放到DX中,然后以DX中的61H作 为外设端口号,从相应的外设端口读取1字节数据送到AL 中 (2)先把立即数61H放到BX中,然后以BX中的6H作 为偏移地址,以缺省段寄存器DS中的值为段地址,从相应 的内存中取出1字节数据送到AL中。 3)把AL中的1字节数据送往21H号外设端口 (4)先把立即数21H放到S中,然后以S中的21H作为 偏移地址,以缺省段寄存器DS中的值为段地址,把A中 的1字节数据送到相应的内存中
【解】 (1)先把立即数61H放到DX中,然后以DX中的61H作 为外设端口号,从相应的外设端口读取1字节数据送到AL 中。 (2)先把立即数61H放到BX中,然后以BX中的61H作 为偏移地址,以缺省段寄存器DS 中的值为段地址,从相应 的内存中取出1字节数据送到AL中。 (3)把AL中的1字节数据送往21H号外设端口。 (4)先把立即数21H放到SI中,然后以SI中的21H作为 偏移地址,以缺省段寄存器DS 中的值为段地址,把AL中 的1字节数据送到相应的内存中
814输入输出方式 主机与外设之间数据交换的方法有4种:无条件方式、 查询方式、中断方式、DMA方式
8.1.4 输入输出方式 主机与外设之间数据交换的方法有4种:无条件方式、 查询方式、中断方式、DMA方式