微机原理及应用 主讲:谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 第7章 输入和输出 7.1 输入与输出概述 输入和输出是计算机系统的重 要组 成部 分, 程 序、原始数据和各种现场采集到的信息都要通过 输 入设备输入到计算机,计算结果和控制信号需要 输 出到各种输出设备。 CPU与外设之间传送的信息有 数据、状态信息 、 控制信息 三大类。 7.1 输入和输出概述 输 入 装 置 计 算 机 输 出 装 置 程序 结果 信息 原始数据 控制 信号 信息 7.1.1 输入输出的寻址方式 CPU寻址外设的两种方式 1、存储器对应输入输出方式(M与I/0统一编地址) 2、端口寻址的输入输出方式(I/0独立编地址) 7.1.1 输入输出的寻址方式 1、存储器对应输入输出方式 I/0统一编地址: 把一个外设端口当 作存 储器 的 一个单元来看待, 每个外设端口占有存储器的一个地 址。 从外设输入一个数据,看作存储器一次读操作; 向外设输出一个数据,看作存储器一次写操作; 7.1.1 输入输出的寻址方式 存储器对应输入输出方式的优点和缺点 优点: 内存和外设的地址由一个译码器解决,不 需专门的I /O指令,全部存储器指令 都可 用, 指令 多 , 使用方便(输入,输出不只局限于累加器); 缺点: 占用内存空间,寻址的地址字节增加,增 加了指令的执行时间。 目 前 的 IBM-PC系列计算机,存储器和端口寻址是 分开的。 7.1.1 输入输出的寻址方式 2、端口寻址的输入输出方式 I/0独立编地址: 端口寻址方式,有专门的I /O指 令。 IN AL,n IN AL,DX IN AX,n IN AX,DX OUT n,al OUT DX,AL OUT n,AX OUT DX,AX 直接寻址,可寻址 间 接寻址,可寻址 0~255个端口 64K个端口 注意是以端口作为地址单元,因一个外设可 能有 一个或一个以上的端口。 7.1.1 输入输出的寻址方式 判断: IN AL,0A00H IN AL,40H OUT DX,AL 7.1.2 CPU与I/O设备之间的接口信息 CPU与外设之间的接口信息 ⒈数据 (1)数字量 如键盘输入的以ASCII码表示的数或字 符;CRT显 示等。 (2)模拟量 非电量 电量 A/D (3)开关量 例:开关的合与断;电机的运转与停止. 7.1.2 CPU与I/O设备之间的接口信息 数据 I/0 装置 状态 CPU 控制 7.1.2 CPU与I/O设备之间的接口信息 2.状态信息 输入设备,用READY表示准备好否? READY=1,准备好; READY=0,未准备好。 输出设备,常用BUSY表示忙否? BUSY=1忙。 例:打印机若不忙,可送数 3.控制信号 (0或1)控制继电器的吸合与断开或外设的启动 与停止等。 状态信息、控制信号与数据是不同性 质 的信息 ,必须区分开来,但微机只有通用的I N/OUT指 令 7.1.2 CPU与I/O设备之间的接口信息 状态信息、控制信息 CPU 状态信息当作数据 CPU 控制信号当作数据 为了不和数据信号混起来,须用不同的端口把 它 们 区分开来,如图7-2所示。这就是一个外设为什 么要几个端口地址的道理。 数据端口一般为8位,而实际应用中,状态与控 制可能只用一位或两位,故二者可合用一个端口。 OUT IN 7.1.2 CPU与I/O之间的接口信息 接口信号如下图所示: 端口地址 8086/8088 数据 IOW 8 I/O端口 1 I/O端口 2 I/O端口 3 数据 8 状态 控制 I/O装置 IOR 8 图7-2 CPU与I/O之间的接口 7.3 CPU与外设之间数据的传送方式 CPU与外设之间传送的信息 前面的内容我们知道C PU与外设之间传送的信 息有 数据、状态信息、控制信息 三大类,下边探讨 CPU是如何与外设传送数据的。 CPU与外设传送数据主要考虑两个方面的问题: 第一.CPU的工作状态 第二.外设的状态 7.3 CPU与外设之间数据的传送方式 ? 无条件传送方式 ? 查询传送方式 ? 中断传送方式 ? 直接数据通道传送(DMA)方式 重点:四种方式的实现技术细节 难点:为什么有这四种输入输出方式? 7.2.1 无条件传送 最简单的传送方式是不管外设是否准备好,C PU 直接对外设进行数据转送。 ?1.无条件传送输入方式 过程: 当CPU执行 IN AL,port IO/M=1 RD=0 地址译码=1 CE=0,则CPU从缓冲器经数据总线获取输入数据。 7.2.1 无条件传送 无条件传送输出 过程:当CPU执行 OUT port,AL IO/M=1 WR=0 地址译码=1 CE=0,则CPU 输出的数据通过数据总线传送到缓冲 器,最终传送到外设。 7.2.1 无条件传送 应用举例: 打印机的走纸电机和字车电机均采用步 进电机,它的运转就是采用程序改变其正反转。 原理: 通过改变锁 存器的低四位的值, 从而驱动电机。 b1=1,b2=1;AB相加电 b2=1,b3=1;BC相加电 b3=1,b4=1;CD相加电 b4=1,b1=1;DA相加电 7.2.1 无条件传送 程序: START:MOV DX,port; 送锁存器地址到DX MOV AL,03H OUT DX,AL ;AB相加电 CALL delay MOV AL,06H OUT DX,AL ;BC相加电 CALL delay 7.2.1 无条件传送 程序续: MOV AL,0CH OUT DX,AL ;CD相加电 CALL delay MOV AL,09H OUT DX,AL ;DA相加电 CALL delay JMP START 7.2.2 查询传送方式 无条件传送的问题: 若外设未准备 好, 数据 传 送失效,关键是浪费了C PU工作时间,于是产生了查 询传送方式。 ?1.查询方式输入 7.2.2 查询传送方式 过程: 输入设备准备好,数据送到锁存器;D触发器=1; CPU读状态,若READY=1则输入数据, 若 READY=0则继续 读状态。 7.2.2 查询传送方式 程序: 数据端口: data_port 状态端口: status_port POLL: IN AL,status_port;读输入设备状态 TEST AL,80H ;检查READY JE POLL ;未READY则读状态 IN AL,data_port ;READY则输入数据 7.2.2 查询传送方式 2.查询方式输出 7.2.2 查询传送方式 例2:采用查询方式的数据采集系统 : 8个模拟量输 入的数据采集系统,用查询方式与CPU传送信息。 程序: [略 ]课后仔细分析原理以及程序! 7.2.3 中断传送方式 查询方式讨论 查询方式中C PU要不断地查询外设,当外设 没有 准备好时,C PU要等待(循环读状态),浪费了C PU的 时间; 而且许多外设速度比较低,在输入输出时,C PU 可以执行大量的时 间, 为了 提高 CPU的 效 率 , 于 是 产 生了中断传送方式。 7.2.3 中断传送方式 过程: 当CPU需要 输入或输出时,由 外设向CPU发出中 断申请,CPU暂停 原来执行的程序, 转入输入输出操作 , 等操作结束后返回 , CPU继续执行原来 的程序。 7.2.3 中断传送方式 中断传送方式 采用中断方式就大大提高了 CPU的 效 率,且 CPU可与多个外设同时工作,从而实现了多任务。 事实上 PC机上的键盘输入、打印任务的管理等 都是采用中断方式进行输入输出的。 7.2.4 直接数据通道传送(DMA)方式 中断传送方式讨论 利用中断进行传送,可大大节约C PU时间, 但中 断传送仍然由C PU通过程序来传送,每次要保护断点, 现场信息,都需要花多条指令的时间。 对于高速的I /O设备,比如磁盘与内存之间交换 数据,就显得速度太慢了。 因此 希望用硬件在外设与内存之间直接进行数 据交换, 而不 通过 CPU,这就是D MA方式,这个硬件 就是DMAC(DMA控制器)。 DMA( Direct Memory Access) 7.2.4 直接数据通道传送(DMA)方式 DMA传送过程 采用D MA方式传送的速度上限取决于存储器的工 作速度 , 可以单字节和数据块传送,过程如下: HOLD DMAC → CPU HLDA CPU → DMAC 7.3节将详细讲解DMA控制器 的工作原理及使用方法。 小结以及习题 为什么有这四种传送方式? 目的是提高C PU的利用率,使输入输出 数据有效。 习题 教材(第3版) 题6.3A-6.5B 回答问题 ?