第8章输入输出程序设计.ppt
《第8章输入输出程序设计.ppt》由会员分享,可在线阅读,更多相关《第8章输入输出程序设计.ppt(60页珍藏版)》请在三一文库上搜索。
1、2019/4/7,1,输入输出功能是计算机的重要组成部分,是人机交互功能的主要承担者。在早期的计算机系统中,通常把输入输出设备或功能作为次要的部分,而把CPU作为主要研究对象。但现在随着输入输出设备的日益丰富、功能要求越来越复杂,输入输出部分在整个计算机系统中的地位也得到了进一步提高。,第八章 输入输出程序设计,2019/4/7,2,输入输出设备是计算机系统的重要的组成部分,没有输入输出设备,计算机就得不到要解决问题的初始信息,处理的结果信息也不可能被送出,这样的计算机不能完成任何工作。 计算机系统是通过硬件接口(或控制器 )以及输出输出程序对外部设备实现处理和控制的。而汇编语言能直接控制硬件
2、,因此就成为编写输入输出程序的最有效的语言。,2019/4/7,3,8.1 I/O设备的数据传送方式,每种输入输出设备都是通过硬件接口或控制器与CPU相连接,这些接口都能支持输入输出指令IN,OUT与外部设备交换信息,这些信息包括控制、状态和数据三种不同性质的信息。,8.1.1 CPU与外设,2019/4/7,4,控制信息:是由CPU发送给外部设备的,命令其处于某种方式或执行某种操作。 状态信息:从接口输入的状态信息表示I/O设备当前的状态。 数据信息:则是I/O设备和CPU真正要交换的信息。数据信息可分为三种类型:数字量、模拟量和开关量。这些信息可以是并行的,也可以是串行的。,CPU与外设之
3、间的数据传送方式有:程序直接控制 I/O方式、中断方式 和 DMA方式。由于DMA方式是由DMA控制器实现其传送功能的,所以在这里只做简单介绍。主要讲解前两种方式。,2019/4/7,5,8.1.2 直接存储器存取方式(DMA)方式,当外设的速度相对很高,且一次传送的数据量很大时,中断方式的效率就很低。例如,对磁盘的读写操作,一般的文件都有几十K,几百K,甚至几兆,通过DMA方式利用专门的接口控制电路,在存储器与高速的外设之间进行大量的数据交换,而不需要CPU的参与。 DMA控制器DMAC,除了具有一般接口的特点外,CPU可以通过对DMAC相应端口的读/写操作来控制DMA的工作方式;DMAC在
4、得到总线控制权后,能够像CPU一样提供相应的控制信号来控制系统总线,从而实现外设与内存之间高速大量的数据传输。一般接口电路不具备控制总线的能力。,2019/4/7,6,2019/4/7,7,8.2 程序直接控制I/O方式,关于I/O“接口”与“端口” I/O接口与CPU之间传送的信息有数据、状态和控制信号等3大类。每个接口内部都包含有一定数量的寄存器(一般包括数据寄存器、状态寄存器和控制寄存器),用来存放三种不同信息。为了区分不同的寄存器(REG),需要给每个REG分配一个地址号,这就类似于给内存单元编址一样。 I/O接口内部可寻址的REG又称为端口。按接受和传送的信息有分为数据端口(双向,输
5、入缓冲,输出锁存),状态端口(一般只读),控制端口(一般只写)。CPU对外设工作方式的控制和信息的交换最终都归结为CPU通过IN/OUT指令对各个可寻址端口的读写操作。,8.2.1 I/O接口基本结构及编址方式,2019/4/7,8,(1)统一编址:存储器(内存)与I/O端口的编址占用同一个地址空间。特点是所有对内存操作的指令对I/O端口同样有效,指令丰富,但会损失一部分的内存空间。 (2)独立编址:内存与I/O端口对应不同的地址空间。对I/O端口有专门的指令。缺点是对I/O端口操作的指令不及统一编址时丰富(例如,8086/8088中对I/O端口就只有最基本的输入输出指令),但能最大程度地满足
6、存储空间的寻址范围。,I/O接口编址方式,2019/4/7,9,图,2019/4/7,10,I/O端口地址 I/O端口是CPU与输入输出设备的交换数据的场所,通过I/O端口,处理机可以接受从输入设备输入的信息;也可向输出设备发送信息。在计算机系统中,为了区分各类不同的I/O端口,就用不同的数字给它们进行编号,这种对I/O端口的编号就称为I/O端口地址。按照每次可交换一个字节数据的端口称为字节端口,每次可交换一个字数据的端口称为字端口。 在Intel公司的CPU家族中,I/O端口的地址空间可达64K,即可有65536个字节端口,或32768个字端口。这些地址不是内存单元地址的一部分,不能普通的访
7、问内存指令来读取其信息,而要用专门的I/O指令才能访问它们。虽然CPU提供了很大的I/O地址空间,但目前大多数微机所用的端口地址都在03FFH范围之内,其所用的I/O地址空间只占整个I/O地址空间的很小部分。表8.1列举了几个重要的I/O端口地址。,2019/4/7,11,2019/4/7,12,计算机在启动时,BIOS程序(Basic Input/Output System)将检查计算机系统中有哪些端口地址。当发现有串行端口地址时,BIOS就把 该端口存放在以地址40:00H开始的数据区内;当发现有并行端口地址时,BIOS会把它 存入以地址40:08H开始的数据区内。 每类端口有4个字的空间
8、,对有二个串行口、二个并行口的计算机系统,其BIOS程序将得到如图所示的部分数据表。 图中03F8H、02F8H、0378H和0278H分别为COM1、COM2、LPT1和LPT2的端口地址。,2019/4/7,13,I/O指令: 输入指令: IN AL, PORT IN AX, PORT IN AL, DX IN AX, DX 输出指令: OUT PORT, AL OUT PORT, AX OUT DX, AL OUT DX, AL PORT: 端口地址 若地址值255,可直接寻址(寻址范围256个端口); 否则, 需经寄存器DX间接寻址(寻址范围64K个端口),8.2.2 I/O指令,20
9、19/4/7,14,(1) IN AX, 28H MOV DATA_WORD, AX (2) IN AL, 27H TEST AL, 00000100 JNZ ERROR MOV DX, 126 IN AL, DX OR AL, 80H OUT DX, AL,2019/4/7,15,code segment main proc far assume cs:code s: push ds xor ax,ax push ax mov bx,6000;f mov cx,1000;times mov dx,cx in al,61h and al,11111100b,trig:xor al,2 out
10、61h,al mov cx,bx delay:loop delay dec dx jne trig ret main endp code ends end s,简单的I/O程序举例:SOUND程序,2019/4/7,16,程序直接控制I/O方式分:无条件传送方式 和条件传送方式,1)无条件传送 无条件:每次进行输入/输出之前,不需要查询外设的状态. 2)有条件传送 又称查询式传送,在每次输入/输出之前,先要读取外设的状态,满足一定的条件才能进行一次I/O操作。,2019/4/7,17,【例】向打印机输出字符。,2019/4/7,18,2019/4/7,19,: 源程序 MOV BX ,OFFS
11、ET, BUFFER ;置缓冲区偏移量 MOV CX,CHRTL ;置输出字符计数器 BG: MOV AL,BX ;取字符 MOV DX,378H ;输出字符到数据寄存器 OUT DX,AL MOV DX,379H ;读打印机状态,WT: IN AL,DX TEST AL,80H ;判忙否? JZ WT ;忙,重查询 MOV DX,37AH ;形成选通信号 MOV AL,0DH ;令打印机打印字符 OUT DX,AL MOV AL,0CH OUT DX,AL INC BX ;指向下一输出字符 LOOP BG ,2019/4/7,20,在看一个例子 Cpu要从三个设备轮流输入数据,proc1、
12、proc2、 proc3分别是设备1、设备2、设备3的数据输入程序,他们的状态寄存器的端口地址分别为stat1、stat2、stat3表示,这三个状态寄存器的第五位是输入准备位。,2019/4/7,21,input: in al , stat1 test al,20h jz dev2 call far ptr proc1 dev2: in al,stat2 test al,20h jz dev3 call far ptr proc2 dev3: in al,stat3 test al,20h jz no_input call far ptr proc 3 no_input,2019/4/7,2
13、2,查询式传输过程的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。 为了解决这个矛盾,我们提出了中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查
14、询状态信号的操作上,使其工作效率得以大大地提高。,8.3 中断传送方式,2019/4/7,23,外部设备是如何连到主机上的?,2019/4/7,24,8.3.1 8086中断的分类:内部中断和硬件中断,(1)内部中断 内部中断简称内中断,又称软件中断。它不需要外部硬件支持。并且不受中断标志位状态的影响。8086/8088内部中断有以下5种: l 除数为中断类型0中断 l 溢出中断类型4中断INTO l 单步中断类型1中断 l 断点中断类型3中断 l 中断指令指令INT n中断,由cpu的某些错误引起,为调试程序而设置的中断,2019/4/7,25,(2)硬件中断:来自处理机的外部条件 所以又称
15、外中断硬件中断主要有两种来源非屏蔽中断NMI 和可屏蔽中断INTR。 非屏蔽中断NMI。非屏蔽中断来源于三方: 系统板的RAM在读写时产生奇偶校验错; I/O通道中的扩展选件出现奇偶校验错; 协处理器8087的异常状态产生的中断。 可屏蔽中断INTR是由外部设备通过一片8259A产生的中断请求。,从外设发出的中断请求到cpu响应中断,用两个控制条件起决定作用: 1、外设的中断请求是否被屏蔽。 2、cpu是否允许相应中断。 8259A内部有一个中断屏蔽寄存器,端口地址为21h,2019/4/7,26,结束硬件中断 mov al, 20h out 20h, al,中断屏蔽寄存器和中断命令寄存器,只
16、允许键盘中断: mov al ,11111101 out 21h,al,2019/4/7,27,外部设备向cpu发出中断请求,cpu是否相应还与 IF 有关,STI开中断指令 将标志寄存器中的中断标志位IF置1,允许CPU响应来自INTR引脚的中断请求 CLI关中断指令 将标志寄存器中的中断标志位IF清0,使CPU不响应来自INTR引脚的中断请求,2019/4/7,28,8.3.2 中断向量表 在8086系统中,内存最低端的1K字节地址范围内(从00000003FFH),放置256个中断的中断向量(入口地址),即称为中断向量表。每个中断矢量在表中占据4个字节,地址较高的两个字节放入口地址的段地
17、址,地址较低的两个字节放偏移地址。 中断向量表中的存储地址 中断类型码n4,什么是中断向量、中断向量地址、中断向量表?,2019/4/7,29,2019/4/7,30,表8-3 中断向量表,地址(Hex) 类型码 中断名称 03 0 除以0 47 1 单步 8B 2 非屏蔽 CF 3 断点 1013 4 溢出 1417 5 打印屏幕 181B 6 保留 1D1F 7 保留 2023 8 定时器 2427 9 键盘 282B A 保留的硬中断 2C2F B 异步通信(COM2) 3033 C 异步通信(COM1) 3437 D 硬盘 383B E 软盘 3C3F F 并行打印机,地址(Hex)
18、类型码 中断名称 4043 10 视频显示I/O调用 4447 11 设备检测调用 484B 12 存储器容量检测 4C4F 13 软/硬盘I/O调用 5053 14 通信I/O调用 5457 15 盒式磁带I/O调用 585B 16 键盘I/O调用 5C5F 17 打印机I/O调用 6063 18 ROM BASIC 6467 19 引导程序入口 686B 1A 时间调用 6C6F 1B 键盘CTRL-BREAK控制 7073 1C 定时器报时 7477 1D 显示器参数表 787B 1E 软盘参数表,7C7F 1F 字符点阵结构参数表,BIOS中断向量,2019/4/7,31,DOS中断向
19、量,2019/4/7,32,用指令来为中断类型N设置中断向量: MOV AX, 0 MOV ES, AX MOV BX, N*4 ;中断入口地址 MOV AX, OFFSET INTHAND MOV ES:WORD PRTBX,AX ;设置中断处理程序INTHAND MOV AX, SEG INTHAND ;的入口地址 MOV ES:WORD PRTBX+2,AX, INTHAND: ;中断处理程序 IRET,用户可以为保留的中断类型号扩充自己的需要的中断功能,对新增加的中断功能要在中断向量表中建立相应的中断向量。,2019/4/7,33,用户在编写自己的中断处理程序代替系统中的某个中断处理功
20、能时,要注意保留原来的中断向量。程序结束时,要恢复原来的中断向量。可以使用dos功能调用来存取中断向量,取中断向量 预置AH=35H, AL=中断类型号 执行INT 21H 把类型号为AL的中断向量取出到ES:BX中 设置中断向量 预置AH=25H, AL=中断类型号,DS:DX=中断向量 执行INT 21H 把DS:DX指向的中断向量放置到中断向量表中类型号为AL的中断向量处,2019/4/7,34, MOV AL, N MOV AH, 35H ;调用DOS功能35H INT 21H PUSH ES ;保存原中断向量 PUSH BX PUSH DS MOV AX, SEG INTHAND M
21、OV DS, AX ;置用户定义的中断处理 MOV DX, OFFSET INTHAND ;程序INTHAND的入口 MOV AL, N ;地址(段地址和偏移地址) MOV AH, 25H ;设置新的中断向量 INT 21H,例:使用DOS功能调用存取中断向量。,2019/4/7,35,POP DS POP DX ;恢复原中断向量 POP DS MOV AL , N MOV AH , 25H INT 21H RET INTHAND: ;中断处理程序 IRET,2019/4/7,36,当中断发生时,由硬件自动完成下列动作: (1)取中断类型号N。 (2)标志寄存器(PSW)内容入栈。 (3)当前
22、代码段寄存器(CS)内容入栈。 (4)当前指令计数器(IP)内容入栈。 (5)禁止外部中断和单步中断(IF=0,TF=0)。 (6)从中断向量表中取4*N的字节内容送IP,取 4*N+2的字节内容送CS。 (7)转中断处理程序。,8.3.3 中断过程,2019/4/7,37,8.3.4 中断优先级和中断嵌套,IBM-PC规定中断的优先级次序为: 优先级高 内部中断(语法错,INTO,INT) 非屏蔽中断(NMI) 可屏蔽中断(INTR) 低 单步中断,可屏蔽中断的优先权又分为8级,在正常的优先级方式下,优先次序为:IR0 、IR1、 IR2、 IR3、 IR4、 IR5、 IR6、 IR7,2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 输入输出 程序设计
链接地址:https://www.31doc.com/p-2552983.html