输入输出程序设计ppt课件

上传人:资****亨 文档编号:145634422 上传时间:2020-09-22 格式:PPT 页数:52 大小:360KB
返回 下载 相关 举报
输入输出程序设计ppt课件_第1页
第1页 / 共52页
输入输出程序设计ppt课件_第2页
第2页 / 共52页
输入输出程序设计ppt课件_第3页
第3页 / 共52页
输入输出程序设计ppt课件_第4页
第4页 / 共52页
输入输出程序设计ppt课件_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《输入输出程序设计ppt课件》由会员分享,可在线阅读,更多相关《输入输出程序设计ppt课件(52页珍藏版)》请在金锄头文库上搜索。

1、.,第八章 输入/输出程序设计,在广泛使用的微型机系统中,外部设备是以实现人机交互和机间通信为目的的一些机电设备。计算机系统通过硬件接口以及I/O控制程序对外部设备的控制过程中,主机不可避免地,有时甚至要很频繁地对设备接口进行联络和控制,因此,能直接控制硬件的汇编语言就成了编写高性能I/O程序最有效的程序设计语言。,.,8.1 I/O设备的数据传送方式,CPU与外设 每种输入输出设备都要通过一个硬件接口或控制器和CPU相连。这些接口和控制器都能支持输入输出指令IN,OUT与外部设备交换信息。这些信息包括控制、状态和数据三种不同性质的信息,他们必须按不同的端口地址分别传送 控制信息输出到I/O接

2、口,通知接口和设备要做什么动作。 状态信息从I/O接口输入到CPU,表示I/O设备当前所处的状态 数据信息是I/O设备和CPU真正要交换的信息。,.,8.1 I/O设备的数据传送方式,程序直接控制I/O方式 中断传送方式 DMA(Direct Memory Access)方式,.,8.1 I/O设备的数据传送方式,DMA(Direct Memory Access)方式 也称为成组数据传送方式。主要是用于一些高速的I/O设备,如磁带、磁盘模数转换器(A/D)等设备。这些设备传输字节或字的速率非常快。对这类高速I/O设备,用执行输入输出指令的方式或完成一次次中断序列的方法来传输字节,将造成数据的丢

3、失,而DMA方式能使I/O设备直接和存储器进行成批数据的快速传输。,.,8.1 I/O设备的数据传送方式,DMA(Direct Memory Access)方式 DMA控制器(Intel8237A)一般包括四个寄存器:控制寄存器、状态寄存器、地址寄存器和字节计数器,这些寄存器在信息传送之前应进行初始化,即系统程序在地址寄存器中设置要传送的数据的首地址,在字节寄存器中设置要传送的数据长度(字节数),在状态控制寄存器中设置控制字,指出数据是输入还是输出,并启动DMA操作。,.,8.1 I/O设备的数据传送方式,DMA(Direct Memory Access)方式 DMA控制器向CPU发出HOLD

4、信号请求使用总线。 CPU发出响应信号HOLD给DMA控制器,并将总线让出,这时CPU放弃了对总线的控制,而DMA控制器获得了总线控制权。 传输数据的存储器地址(在地址寄存器中)通过地址总线发出。 传输的数据字节通过数据总线进行传送。 地址寄存器增1,以指向下一个要传送的字节。 字节计数器减1。 如字节计数器非0,转向第3步。 否则,DMA控制器撤销总线请求信号HOLD,传送结束。,.,8.2 程序直接控制I/O方式,I/O端口 计算机的外部设备和大容量存储设备都是通过接口连接到系统上,每个接口由一组寄存器组成,这些寄存器都分配有一个称为I/O端口的地址编码。计算机的CPU和内存就是通过这些端

5、口和外部设备进行通信的。 I/O接口部件中一般有三种寄存器:数据寄存器、状态寄存器、控制寄存器,8.2 程序直接控制I/O方式,I/O端口 在80 x86微机中,I/O端口编址在一个独立的地址空间中,这个I/O空间允许设置64K(65536)个8位端口或32K个(32768)16位端口,这些端口地址实际上只用了其中很小一部分。,.,8.2 程序直接控制I/O方式,I/O指令 IN(input)输入 OUT(output)输出 这组指令只限于使用累加器EAX,AX,AL传送信息,.,8.2 程序直接控制I/O方式,I/O指令 IN输入 长格式:IN AL,PROT(字节) IN AX,PROT(

6、字) IN EAX,PROT(双字) 执行的操作:(AL)(PORT) (字节) (AX)(PORT+1,PROT) (字) (EAX)(PORT+3,PORT+2,POTR+1,PROT) (双字),.,8.2 程序直接控制I/O方式,I/O指令 IN输入 短格式:IN AL,DX(字节) IN AX,DX(字) IN EAX,DX(双字) 执行的操作:(AL)(DX) (字节) (AX)(DX)+1, (DX) (字) (EAX)(DX)+3, (DX)+2, (DX)+1,(DX) (双字),.,8.2 程序直接控制I/O方式,I/O指令 OUT输出 长格式:OUT PROT,AL(字节

7、) OUT PROT,AX(字) OUT PROT,EAX(双字) 执行的操作: (DX) (AL) (字节) (DX)+1,DX) (AX)(字) (DX)+3,(DX)+2,(DX)+1,(DX) (EAX)(双字),.,8.2 程序直接控制I/O方式,I/O指令 OUT输出 短格式:OUT DX,AL(字节) OUT DX,AX(字) OUT DX,EAX(双字) 执行的操作: (DX) (AL) (字节) (DX)+1,(DX), (AX)(字) (PORT+3,PORT+2,PORT+1,PORT) (EAX)(双字),.,8.2 程序直接控制I/O方式,对8086及其后继机型的微处

8、理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。微处理机分配给外部设备最多有64K个端口,其中前256个端口(0FFH)称为固定端口,可以直接在指令中指定。当端口地址超过8位(256),称为可变端口,它必须先送到DX寄存器,然后再用IN或OUT指令传送信息。,.,8.2 程序直接控制I/O方式,例: IN AX,28H MOV DATA_WORD,AX MOV DX,126H IN AL,DX OR AL,80H OUT DX,AL,.,8.2

9、程序直接控制I/O方式,I/O程序举例 例8.1发声子程序,.,8.2 程序直接控制I/O方式,SOUND PROC NEAR PUSH AX PUSH DX MOV DX,CX IN AL,61H AND AL,11111100B TRIG: XOR AL,2 OUT 61H,AL,MOV CX,BX DELAY: LOOP DELAY DEC DX JNE TRIG POP DX POP AX RET SOUND ENDP,.,8.2 程序直接控制I/O方式,例8.2打印字符程序PRT_CHAR 这是一个采用查询方式的打印字符程序。程序通过反复读取并测试打印机的状态来控制输出。在打印机接口

10、中,数据寄存器的端口地址位378H,状态寄存器的端口地址为379H,控制寄存器的端口地址为37AH。,.,8.2 程序直接控制I/O方式,.,8.2 程序直接控制I/O方式,.,8.2 程序直接控制I/O方式,在例8.2打印字符的程序中,使用TEST指令对状态寄存器(I/O端口379h)的第7位进行测试,如果第7位为0,表示打印机处于忙状态,这时,CPU不能送出打印数据,所以程序再次循环测试,一直等到第7位变为1,表明打印机空闲,程序才从数据区取出一个字符送到打印机的数据寄存器,并由控制寄存器发出一个选通信号(端口37AH的0位),控制打印机将这个字符打印输出。 这种CPU与外部设备交换信息的

11、方式称为查询方式或等待方式。,.,8.2 程序直接控制I/O方式,Data segment mess db Printer is normal,0dh,0ah count equ $-mess Data ends Cseg segment Main proc far assume cs:cseg,ds:data Start: mov si,offset mess mov cx,count Next: mov dx,379h,Wait: in al,dx test al,80h je wait mov al,si mov dx,378h out dx,al mov dx,37ah mov al,

12、0dh out dx,al mov al,0ch out dx,al,inc si loop next mov ah,4ch int 21h Main endp Cseg ends end start,.,8.2 程序直接控制I/O方式,有时系统中同时有几个设备要求输入输出数据,那么对每个设备都编写一段执行输入输出数据的程序,然后轮流查询这些设备的准备位,当某一设备准备好允许输入或输出数据时,就调用这个设备的I/O程序完成数据传输,否则依次查询下一个设备是否准备好。,.,8.2 程序直接控制I/O方式,INPUT: IN AL,STAT1 TEST AL,20H JZ DEV2 CALL FA

13、R PTR PROC1 DEV2:IN AL,STAT2 TEST AL,20H JZ DEV3 CALL FAR PTR PROC2DEV3:IN AL,STAT3 TEST AL,20H JZ NO-INPUT CALL FAR PTR PROC3 NO-INPUT: .,.,8.2 程序直接控制I/O方式,查询方式的优点是,可以用程序安排几个输入输出设备的先后优先次序,最先查询的设备,其工作的优先级也最高。修改程序中的查询次序,实际上也就修改了设备的优先级。查询方式的缺点就是前面提到的在查询过程中,浪费了CPU原本可执行大量指令的时间,而且由询问转向相应的处理程序的时间较长,尤其在设备比

14、较多的情况下。,.,8.3 中断传送方式,一种有效的CPU与I/O传送数据的方式,.,8.3 中断传送方式,引起中断的事件称为中断源,它们可能是来自外部设备的I/O请求,也可能是计算机的一些异常事故或其他内部原因。由外设控制器或协处理器(8087/80287)引起的中断一般称为硬件中断或外中断,由程序中安排的中断指令INT产生的中断,或由CPU的某些错误结果产生的中断称为软件中断或内中断。,.,8.3 中断传送方式,.,8.3 中断传送方式,8086的中断分类 软件中断 由中断指令INT引起 由于CPU的某些错误而引起 为调试程序(DEBUG)设置的中断,.,8.3 中断传送方式,中断指令IN

15、T引起的内中断 CPU执行完一条INT n 指令后,会立即产生中断,并且调用系统中相应的中断处理程序来完成中断功能,中断指令的操作数n指出中断类型号。,.,8.3 中断传送方式,处理CPU某些错误的中断 除法错中断 在执行除法指令时,若发现除数为0或商超过了寄存器所能表达的范围,则立即产生一个类型为0的中断 溢出中断 如果溢出标志OF置1,有一条专门的指令INTO来中断发生溢出的算术操作,主要功能是打印出一个出错信息,在处理程序结束时,不返回原程序继续运行,而是把控制权交给操作系统。,.,8.3 中断传送方式,为调试程序设置的中断 单步中断 断点中断,.,8.3 中断传送方式,硬件中断 非屏蔽

16、中断 来自各种外部设备的中断,.,8.3 中断传送方式,来自外部设备的中断 微型计算机的外部设备一般有硬磁盘(disk),软磁盘(floppy disk),显示器(CRT)和各种打印机(line printer)等,这些外部设备通过8259A可编程中断控制器和CPU相连。8259A可编程中断控制器可接收来自外设的中断请求信号,并把中断源的中断类型号送CPU,如果CPU响应该外设的中断请求,就自动转入相应的中断处理程序。,.,8.3 中断传送方式,来自外部设备的中断 从外设发出中断请求到CPU响应中断,有两个控制条件起决定性作用 该外设的中断请求是否被屏蔽 CPU是否允许响应中断 这两个条件分别由8259A的中断屏蔽寄存器(IMR)和标志寄存器(FLAGS)中的中断允许位IF控制,.,8

展开阅读全文
相关资源
相关搜索

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

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