IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第12章 输入、输出和中断程序设计

上传人:E**** 文档编号:89189185 上传时间:2019-05-21 格式:PPT 页数:40 大小:370KB
返回 下载 相关 举报
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第12章 输入、输出和中断程序设计_第1页
第1页 / 共40页
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第12章 输入、输出和中断程序设计_第2页
第2页 / 共40页
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第12章 输入、输出和中断程序设计_第3页
第3页 / 共40页
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第12章 输入、输出和中断程序设计_第4页
第4页 / 共40页
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第12章 输入、输出和中断程序设计_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第12章 输入、输出和中断程序设计》由会员分享,可在线阅读,更多相关《IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第12章 输入、输出和中断程序设计(40页珍藏版)》请在金锄头文库上搜索。

1、第12章 输入、输出和中断程序设计 12.1 输入、输出概述 12.2 程序直接控制方式 12.3 中断 ,返回主目录,第12章输入、输出和中断程序设计,计算机通过外部设备进行输入输出,是必不可少的操作,也是实现计算机与外部设备(包括人机间)信息交换的必要手段。所以,输入与输出的程序设计,中断程序设计也是计算机程序设计中的一个重要方面。 12.1 输入、输出概述 计算机硬件系统是由CPU、内存储器和输入输出设备所组成。内存储器与CPU可以直接进行数据交换,主存的地址总线、数据总线、控制总线直接与CPU相连,而外部设备要通过接口才能与CPU进行消息交换。如图121所示。,其次,是要有相应的软件来

2、驱动外设,因此要为外设编写输入、输出程序。亦称为软接口,光有硬接口的连接,没有相应的软件驱动,外设就不能工作。 外设输入的过程:输入设备把数据输入到接口中的数据寄存器,由CPU执行输入程序,把接口中的数据寄存器内容读到CPU内寄存器,或再转存存储器中。处理程序完成对数据的处理,存入指定的寄存器或转到存储器中。 外设输出的过程:CPU执行输出程序,将寄存器或存储器中的数据送入输出接口中的数据寄存器,然后启动输出设备,将接口中的数据由输出设备输出(如打印等)。 输入输出过程所涉及的问题有:外设与主机间如何连接;主机如何寻找外设地址;主机如何控制外设的工作;外设和主机之间要传送哪些信息等。,12.1

3、.2 CPU寻址外设方式 CPU与外设交换信息的源(输入)或目标(输出)是I/O设备,接口只是中转的桥梁。另外,当CPU与外设速度不匹配,工作不同步时,接口起着协调作用。因此,通过接口交换的不仅有数据信息,还有外设的控制、状态等其它信息。这样一个完整的接口就需要配备若干个分别具有独立地址而又彼此能相互联系、协调工作的消息通路。 接口中的寄存器称为端口(PORT)。于是,端口成为CPU进行I/O操作的基本对象。例如,打印机所需要的接口就至少需要数据、状态、控制等几个端口,数据端口用于向打印机输出数据,状态端口用于向CPU报告打印机是否忙、传送是否正常等联络信息,控制端口用于传送CPU发向打印机的

4、控制命令。 CPU与接口的联系均通过I/O端口传送。对软件来说,把信息放到I/O端口中,就是把信息送到接口设备中,即把信息送到外设中,反之亦然。因而,使用外设归结为使用相应设备接口中的端口。为了识别接口中的I/O端口,对端口给予地址编号,访问I/O端口的地址编号有两种:一种是系统编址或称为存储器编址,即I/O端口占用内存的地址编号,访问I/O就同访问相应的内存单元一样,无需专门的I/O指令;另一种是I/O端口编址,即I/O端口具有独立的端口地址,不占据内存空间,需要有专门的I/O指令才能访问I/O端口。80X86的I/O端口编址大多采用后一种方法。例如80486微处理器有两个独立的物理地址空间

5、:存储器空间和I/O空间。虽然80486微处理器也支持存储器编址,但通常都把外设放在I/O空间,即采用I/O端口编址。该I/O空间由64K字节组成,I/O地址线有16根A15A0,它可以编排64K个8位端口,或用于32K个16位端口,或总和小于64K个各种端口数的组合。该64K个I/O端口地址空间采用物理地址,通过I/O指令来访问这些端口。,表示其开关量。 有些量的变化,如温度、压力、流量等非电量测量所得的电压或电流信号是连续的模拟量,它要经过滤波、放大处理后的模拟量再经过采样/保持、模数转换后,成为数字信息,才能被计算机存储与处理。 2. 状态信息 由于外设种类繁多,工作速度也不一样,外设的

6、速度比CPU的速度要慢得多。如果CPU与外部设备各按自己的工作速度传递信息,显然会发生数据冲突。如CPU向打印机传送打印信息,打印机收到信息后,还未来得及送去打印,或打印操作尚未完成,CPU又送来新的打印信息,就会把原来的打印信息冲掉,因此造成信息丢失。利用状态信息可以解决这个问题,打印机收到CPU发来的信息就发出一个忙信号BUSY,CPU去检测这个状态信息,在检测到不忙时才发送新的信息给打印机。 在输入时,由输入设备发出是否已准备好(READY)的状态信息,当CPU查询到已准备好状态信息时,就可以从输入设备读入数据信息。 在输出时,由输出设备给出是否已空(EMPTY)的状态信息,表明能否接收

7、新的信息。当CPU查询到已空状态信息时,就可以把数据信息发送给输出设备。有了状态信息就可以使高速的CPU与慢速的外设在速度上协调配合。这些联络信号也称为握手信号。, 3. 控制信息 控制信息是由CPU发送到接口中的控制寄存器,外部设备根据控制消息命令其与之相接的外设处于某种工作方式或执行某些操作。例如,控制信息可以设置外设的工作方式选择,工作规约和格式的选择、工作过程的启动或停止等。 以上所说的三个不同的信息,承担不同的任务,但它们都是通过数据总线来传送的。为了区别它们,设置了各自的端口地址,这就是为什么一个接口中可能有数据端口地址、状态端口地址和控制端口地址的原因。 由于外部设备是通过接口与

8、CPU相连接的,所以端口地址是分配给接口的。每个端口地址对应一个寄存器,所以接口部件是CPU与外设之间的重要界面。 12.1.4 数据传送方式 CPU与外部设备进行数据传送的格式可以有两种方式::一种是并行传送,另一种是串行传送。并行传送若以字节为单位,将通过并列的8条传输线在并行接口与外设之间传递数据;串行传送时,CPU与串行接口之间仍然为并行传送,在串行接口与外设之间才将数据按一位一位的顺序传送,而且是从最低位开始,因此串行接口和外设之间只要一条数据传输线就可以了(而实际还应该有地线等)。 若为串行输入,在串行接口中必须有“串变并”的转换;若为串行输出,在串行接口中要有“并变串”的转换。

9、为实现CPU与外设之间的信息交换,现在已经设计出很多并行接口、串行接口等芯片供用户选择使用。 目前CPU与外部设备之间进行信息传送的方式有以下几种:程序控制方式、直接存储器存取方式(DMA方式) 与通道传输方式等,程序控制方式中又有无条件控制方式、查询方式与中断控制方式。,【例121】数据采集的程序设计。 编程要求:采集某设备管道的流量、压力、温度等参数。经过数字传感器将物理量转为数字量并已存入接口寄存器中。硬件连接示意图如图123所示。试编写程序实现诸参数的采集。 分析:这是一个物理量变化缓慢的数据采集问题,采集时间有所限制。传感器输出总是处于准备好状态。因此可用无条件直接输入的方法,而无须

10、查询状态是否准备就绪。 从图123可知,三个检测传感器分别通过接口与CPU相连。端口地址分别设置为80H,81H,82H,是由地址线A7A6A5A4A3A2A1A0经地址译码器产生对应的端口地址。 源程序如下: DATA SEGMENT STRE DB 3 DUP(?) PORT1 EQU 80H ;流量端口地址 PORT2 EQU 81H ;压力端口地址 PORT3 EQU 82H ;温度端口地址 DATA ENDS STAK SEGMENT STACK DB 120 DUP(?) STAK ENDS,CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN: MO

11、V AX,DATA MOV DS,AX LEA BX,STRE ;取存储区有效地址 IN AL,PORT1 MOV BX,AL ;存流量数据 INC BX IN AL,PORT2 MOV BX,AL ;存压力数据 INC BX IN AL,PORT3 MOV BX,AL ;存温度数据 CALL SJCL ;调用数据处理子程序SJCL ;此处程序略 SJCL PROC NEAR ;数据处理子程序(略) RET SJCL ENDP CODE ENDS END BEGIN 本例只是对3个检测传感器转换结果做一次巡回数据采集。,12.2.2 查询式传送方式 有些设备在传递数据时,如果不去理会其工作状态

12、,而进行直接输入、输出操作,就可能产生数据传送的冲突,从而引起数据丢失。解决这个问题的常用办法是为外设配一个状态端口,CPU不断从该端口读入信息,以判断外设是否已经准备好。这种联络方式称为“查询”。本工作方式是先查询设备状态,后进行输入、输出操作的数据传送。这种方式使得CPU与外设处于串行的工作状态,会浪费CPU的大量时间。 1. 查询输入 使用查询方式的外设接口中,必须具备有数据寄存器和状态寄存器,并且各有一个端口地址,分别为数据端口地址和状态端口地址。如图124所示。,在使用查询输出工作方式的接口中,也必须具有图124所示的数据寄存器和状态寄存器,所不同的是状态寄存器中选择的位(如D7)表

13、示忙(BUSY)状态。如为“1”表示外设正忙,暂不能接受新的数据;用“0”表示空闲状态,可以接受数据了。仿照查询输入方式,查询输出的主要程序段可为: OTEST : IN AL,PORTS ;读入状态信息 TEST AL,80H ;测D7位 JNZ OTEST ;忙,重新查询 MOV AL,DAT ;空闲,从存储区读取数据 OUT PORTD,AL ;向数据端口输出数据 【例122】 假设一个系统中有3个输入设备轮流输入数据。PORG1、PROG2、PROG3分别是设备1,设备2和设备3的数据处理子程序的入口符号地址。输入设备的状态端口符号地址分别用STAT1,STAT2,STAT3表示,这三

14、个状态寄存器的测试位都在D6上,1代表就绪,0代表未绪。用以下主要程序段来实现轮流查询方式的输入操作。设备1的输入操作优先级最高,设备3最低。 TREEIN: MOV FLAGS,0 ;清除标志 DEVC1: IN AL,STAT1 ;读入设备1的状态 TEST AL,40H ;测D6位狀态,看是否准备就绪 JZ DEVC2 ;未就绪转DEVC2 CALL FAR PTR PROG1 ;就绪,调用PROG1进行数据处理 CMP FLAGS,1 ;如标志仍为0,则本设备继续输入 JNE DEVC1 ;设备1的数据全部输入完,标志为1 DEVC2: IN AL,STAT2 ;读外设2的状态,TES

15、T AL,40H JZ DEVC3 CALL FAR PTR PROG2 CMP FLAGS,1 JNE DEVC1 ;如FLAGS0,又转回查询DEVC1 DEVC3: IN AL,STAT3 TEST AL,40H JZ NINPUT CALL FAR PTR PROG3 NINPUT: CMP FLAGS,1 JNE DEVC1 说明: 本例子的PROG1、PROG2、PROG3的子程序没有编写; 程序段中设置了一个标志FLAGS,它可由数据段定义的存储单元,将它作为标志来使用。有了这个标志后,就可以使第一个输入设备有比较高的优先级,第二个设备次之,第三个输入设备最低。FLAGS一开始设置为0,只有当第一个输入设备结束输入过程时,才使FLAGS置1。假如第一个输入设备需要输入20个字符,那么输入第1、2、3、19个字符时,标志FLAGS都要保持为0,所以,程序一直在DEVC1标号段内运行,当输入第20个字符后,FLAGS才置1(这要在设备1数据处理子程序中进行控制),于是才可能进入DEVC2开始程序段。开始时,只有当第一个输入设备没有准备就绪,才会转去检测第二个输入设备是否准备就绪,若就绪,则仅当输入一个字符后又立刻返回到DEVC1程序段,又从DEVC1开始检测;若第二个设备未就绪,才会转到DEVC3程序段。所以从程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号