版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章 输入输出程序设计,河南师范大学计算机与信息技术学院,2,2020/8/12,本章内容提要,河南师范大学计算机与信息技术学院,3,2020/8/12,8.1 中断指令及有关概念,中断(Interrupt )是又一种改变程序执行顺序的方法。,有时当系统运行或者程序运行期间在遇到某些特殊情况使,需要计算机自动执行一组专门的例行程序来进行处理。这种情况称为中断(interrupt),所执行的这组程序称为中断例行程序(interrupt routine)或中断子程序。,中断具有多种中断类型。8086可以管理256个中断。,各种中断用一个向量编号来区别。,主要分成外部中断和内部中断。,河南师范大学
2、计算机与信息技术学院,4,2020/8/12,中断的执行过程,转到中断例行程序去执行。,当CPU响应一次中断:,IP/EIP和CS的内容入栈保存; 保存现场,以便在中断处理结束时返回现场:FLASGS/EFLAGS内容入栈保存。,中断返回: 恢复IP/EIP和CS:保存的IP/EIP和CS内容出栈。 恢复FLAGS/EFLAGS内容。,执行演示,河南师范大学计算机与信息技术学院,5,2020/8/12,中断指令,INT i8 ;中断调用指令:产生i8号中断,IRET、IRETD ;中断返回指令:实现中断返回,INTO ;溢出中断指令: ;若溢出标志OF=1,产生4号中断 ;否则顺序执行,河南师
3、范大学计算机与信息技术学院,6,2020/8/12,(1) INT中断指令,执行的操作:,PUSH (FLAGS) IF0 TF0 AC0 PUSH(CS) PUSH(IP) (IP ) (TYPE*4) (CS )(TYPE*4+2),格式:INT TYPE或INT,该指令不影响除IF、TF、AC以外的标志位。,河南师范大学计算机与信息技术学院,7,2020/8/12,(2) INTO若溢出则中断指令,执行的操作:,若OF=1,则:PUSH (FLAGS) IF0 TF0 AC0 PUSH(CS) PUSH(IP) (IP ) (10H) (CS )(12H),格式:INTO,该指令不影响除
4、IF、TF、AC以外的标志位。,河南师范大学计算机与信息技术学院,8,2020/8/12,(3) IRET从中断返回指令,执行的操作:,(IP ) POP() (CS )POP() (FLAGS)POP(),格式:IRET,适用于操作数为16位的情况。,根据出栈的值设置标志位。,河南师范大学计算机与信息技术学院,9,2020/8/12,(4) IRETD从中断返回指令,执行的操作:,(IP ) POP() (CS )POP() (EFLAGS)POP(),格式:IRETD,适用于操作数为32位的情况。,根据出栈的值设置标志位。,河南师范大学计算机与信息技术学院,10,2020/8/12,8.2
5、 中断传送方式,河南师范大学计算机与信息技术学院,11,2020/8/12,中断的相关概念,中断是CPU和外设进行数据传送的有效办法。它可以避免因反复查询外设状态而浪费的时间,从而提高CPU的效率。,中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。,中断源引起中断的事件。,外部中断(硬件中断)由外设控制器或协处理器引起的中断。,内部中断(软件中断)由程序中安排的中断指令INT产生的中断,或由CPU的某些错误结果产生的中断。,8080/8088的中断源如图8.3所示。,河南师范大学计算机与信息技术学院,12,2020/8/12,8.2.1 8086的中断分类,软件中断,硬件中断,河
6、南师范大学计算机与信息技术学院,13,2020/8/12,1. 软件中断,软件中断又称内中断。,它通常由三种情况引起:,由中断指令INT引起;,由于CPU的某些错误引起;,为调试程序(DEBUG)设置的中断。,河南师范大学计算机与信息技术学院,14,2020/8/12,(1)中断指令INT引起的内中断,CPU执行完一条INT n指令后,会立即产生中断,并调用系统中相应的中断处理程序来完成中断功能,n指出中断类型号。,INT指令可以指定00FFH中的任何类型号。,除系统占用的类型号之外,用户还可利用为用户保留的类型号扩充新的中断处理功能。,INT n 、INTO、除法错中断都不能被禁止,而且比任
7、何外部中断的优先级都高。,河南师范大学计算机与信息技术学院,15,2020/8/12,(2)处理CPU某种错误的中断,除法错中断:INT 0 在执行除法时,如果除数为0或商超过了寄存器所能表达的范围,则产生一个类型为0的中断。,溢出中断:INTO中断类型号为4 若溢出标志OF=1,则产生溢出中断;否则,不产生中断,CPU继续运行原程序。 该中断的处理程序,主要是打印出一个错误信息,在处理结束后,不返回原程序继续执行,而是把控制权交给操作系统。 如:ADDAX , VALUE INTO;测试加法溢出,河南师范大学计算机与信息技术学院,16,2020/8/12,(3)为调试程序(DEBUG)设置的
8、中断,单步中断:为寻找程序中的问题,进行单步工作(一次只执行一条指令)。类型号为1。 当单步标志位TF1时,每条指令执行后,CPU会自动产生单步中断。 使用单步中断可以逐条指令地跟踪程序的流程,观察CPU每执行一条指令后,各个寄存器及有关存储单元的变化,从而指出和确定产生错误的原因。,断点中断:将程序分段,为每段设置一个断点。中断类型号为3。 当CPU执行到断点时便产生中断,可以检查各寄存器及有关存储单元的内容。 断点可以设置在程序的任何的地方。,河南师范大学计算机与信息技术学院,17,2020/8/12,2. 硬件中断,硬件中断又称外中断。,硬件中断主要有两种来源:,非屏蔽中断(NMI)为电
9、源错、内存或I/O总线的奇偶等异常事件的中断保留的。中断类型号为2。 可屏蔽中断来自各种外设的中断。由外设的请求引起的中断。,可屏蔽中断受中断标志IF控制; 非屏蔽中断和IF位无关。,河南师范大学计算机与信息技术学院,18,2020/8/12,可屏蔽中断,从外设发出中断请求到CPU响应中断,有两个控制条件起决定性作用:,该外设的中断请求是否屏蔽由中断屏蔽寄存器(IMR)控制。 CPU是否允许响应中断由标志寄存器(FLAGS)中的中断允许位IF控制。,河南师范大学计算机与信息技术学院,19,2020/8/12,中断屏蔽寄存器,中断屏蔽寄存器的端口地址是21H,如图8.4所示。,中断屏蔽寄存器可分
10、别控制某个可屏蔽中断源。,在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄存器,以确定允许用中断方式工作的外部设备。,;系统重设键盘中断 INAL , 21H MOVAL , 11111101B OUT21H , AL,河南师范大学计算机与信息技术学院,20,2020/8/12,控制CPU的中断允许标志IF,CPU是否响应中断还与中断允许标志IF有关。,IF=0,CPU禁止响应任何外设的中断(关中断);,IF=1,允许CPU响应外设的中断请求(开中断)。,中断允许标志IF是控制所有可屏蔽中断的。,当任何类型的中断发生时,当前的FLAGS要入栈保存,然后清除IF位,进入中断处理程序,如果
11、允许在一个中断处理程序的执行过程中发生硬中断,则必须用一条STI指令开中断。,当中断返回时,恢复了原FLAGS的值,其中IF=1,则允许硬中断再次发生。,STI设置中断允许位(IF=1) CLI清除中断允许位(IF=0),河南师范大学计算机与信息技术学院,21,2020/8/12,中断命令寄存器,在一次中断处理结束之前,还应给8259A的可编程中断控制器的中断命令寄存器发出中断结束命令(EOI:end of interrupt),否则以后将屏蔽掉对同级中断或低级中断的处理。,中断命令寄存器的I/O端口地址为20H(如图8.4所示)。,在中断处理过程中,也可利用EOI命令清除当前中断请求,以响应
12、同级或低级中断。,;结束硬件中断 MOVAL , 20H OUT20H , AL,河南师范大学计算机与信息技术学院,22,2020/8/12,8.2.2 中断向量表,每个中断都有一个中断类型号。,80 x86可处理256种类型的中断,类型号为00FFH。,中断向量表就是各类型中断处理程序的入口地址表。,存储器的最低1.5KB,从00005FFH为系统占用,其中,最低的1KB,从0000003FFH存放中断向量表。,256个中断向量,每个中断向量占4个字节。,每类中断向量的地址中断类型号4。,图8.5给出了中断向量表。 表8.2给出了中断向量表地址分配。 图8.6展示了中断操作步骤。,河南师范大
13、学计算机与信息技术学院,23,2020/8/12,中断操作步骤,中断操作步骤:,取中断类型号; 计算中断向量地址; 取中断向量,偏移地址送IP,段地址送DS; 转入中断处理程序; 中断返回到INT指令的下一条指令。,河南师范大学计算机与信息技术学院,24,2020/8/12,为中断类型N设置中断向量,MOVAX , 0 MOVES , AX MOVBX , N*4 MOVAX , OFFSET INTHAND MOVES:WORD PTRBX , AX MOVAX , SEG INTHAND MOVES:WORD PTRBX+2 , AX INTHAND: IRET,用户可以利用保留的中断类型
14、号扩充自己需要的中断功能, 对新增加的中断功能要在中断类型表中建立相应的中断向量。,河南师范大学计算机与信息技术学院,25,2020/8/12,使用DOS功能调用(21H)存取中断向量,例8.4 使用DOS功能调用存取中断向量,河南师范大学计算机与信息技术学院,26,2020/8/12,8.2.3 中断过程,当中断发生时,由中断机构自动完成下列操作:,取中断类型号N; 标志寄存器(FLAGS)内容入栈; 当前代码段寄存器(CS)内容入栈; 当前指令指针寄存器(IP)内容入栈; 禁止硬件中断和单步中断(IF=0 , TF=0); 从中断向量表中取4N的字内容送IP,取4N+2的字内容送CS; 转
15、中断处理程序。,如图8.7的中断过程示意图。,河南师范大学计算机与信息技术学院,27,2020/8/12,8.2.4 中断优先级和中断嵌套,8086规定的中断优先级次序为: 优先级高软件中断(除法错,INTO ,INT) 非屏蔽中断(NMI) 可屏蔽中断(INTR) 低单步中断,可屏蔽中断的优先权分为八级,正常情况下,优先级次序是: IR0 , IR1 , IR2 , IR3 , IR4 ,IR5 , IR6 , IR7,定时器打印机 优先级高低,河南师范大学计算机与信息技术学院,28,2020/8/12,8259A的中断命令寄存器控制优先级,8259A的中断命令寄存器的第6、7位控制各种中断
16、请求的优先级次序。,RSL 00正常优先级方式 01清除由L2L0指定的中断请求 10各中断优先级依次左循环一个位置 11各中断优先级依次循环到由L2L0指定的中断请求到达最低优先级位置上,;使优先级次序再左循环一个位置 MOVAL , 10100000 OUT20H , AL;IR6 , IR7 , IR0 , IR1 , IR2 ,IR3 ,IR4 , IR5,河南师范大学计算机与信息技术学院,29,2020/8/12,中断嵌套,中断嵌套:正在运行的中断处理程序,又被其他中断源中断的情况。,80 x86没有规定中断嵌套的深度(中断程序又被中断的层次),实际受堆栈容量的限制。,一个中断处理程
17、序,在开中断的情况下,可以被优先级高于它的中断源中断。,只有发出了EOI命令,清除正在执行的中断请求,才可以响应同级或低级的中断。,如图8.8所示:正常优先级方式下,优先级中断和中断嵌套发生时的处理过程。,河南师范大学计算机与信息技术学院,30,2020/8/12,8.2.5 中断处理程序,主程序为响应中断所做的准备工作以及硬件(包括CPU和外设接口)自动完成以下动作:,河南师范大学计算机与信息技术学院,31,2020/8/12,中断响应的特殊情况,注意:设备发到CPU的中断请求信号在时间上是随机的,只要未被屏蔽的设备本身的状态是准备好或空闲的,它就会向CPU请求中断,如果此时CPU正在执行一
18、条指令,那么要等到这条指令执行完后,才响应中断。,加封锁的指令(如LOCK MOV AX , BX)应看作一条指令;,对加重复前缀的指令(如REP MOVSB)要作为一个整体来处理,执行一次重复串指令即可响应中断;,对MOV、POP指令,如果处理对象是段寄存器,那么执行完本条指令后,接着再执行一条指令才响应中断。,对STI和IRET指令,也要在该指令执行完后,再执行一条指令才响应中断。,河南师范大学计算机与信息技术学院,32,2020/8/12,中断处理子程序,中断处理子程序的编写步骤:,保存寄存器内容; 如允许嵌套,则开中断(STI); 处理中断; 关中断(CLI); 送中断结束命令(EOI
19、)给中断命令寄存器; 恢复寄存器内容; 返回被中断的程序(IRET)。,注意:CPU产生一次中断,I/O设备只完成一个字节(或字)的输入输出,所以中断处理程序所用的指针变量或数据变量一般应设置存储单元来保存。,河南师范大学计算机与信息技术学院,33,2020/8/12,中断程序设计举例,例8.5 响铃P300-303,例8.6键盘输入、打印机输出P303-310,例8.7 P310-313 除数为0的中断处理程序,河南师范大学计算机与信息技术学院,34,2020/8/12,练习与作业,练习: 提交作业:,河南师范大学计算机与信息技术学院,35,2020/8/12,图8.3 80X86中断源,河
20、南师范大学计算机与信息技术学院,36,2020/8/12,图8.5 中断向量表,河南师范大学计算机与信息技术学院,37,2020/8/12,表8.2 中断向量表地址分配,河南师范大学计算机与信息技术学院,38,2020/8/12,图8.6 中断操作步骤,河南师范大学计算机与信息技术学院,39,2020/8/12,例8.4 -1,MOVAL , N MOVAH , 35H INT21H PUSHES;保存原来的N号中断向量 PUSHBX PUSHDS MOVAX , SEG INTHAND MOVDS , AX MOVDX , OFFSET INTHAND MOVAL , N MOVAH , 2
21、5H;将INTHAND设置为新的 INT21H;N号中断服务程序 POPDS,河南师范大学计算机与信息技术学院,40,2020/8/12,例8.4 -2, POPDX POPDS MOVAL , N MOVAH , 25H INT21H RET INTHAND: IRET,河南师范大学计算机与信息技术学院,41,2020/8/12,图8.7 中断过程,如果在执行中断处理程序的过程中,还允许外部中断,可通过STI指令再把IF置为1,即开中断。,河南师范大学计算机与信息技术学院,42,2020/8/12,图8.8 正常优先级方式下的典型中断序列,河南师范大学计算机与信息技术学院,43,2020/8/12,中断向量,在80 x86中,在实模式下工作时:,中断向量:中断例行程序的入口地址。,存储器的最低地址区的1024个字节(00000H 003FFH)为中断向量区,其中存放着256种类型的中断
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 集美大学诚毅学院《环境与自然资源经济学》2025-2026学年期末试卷
- 福建农林大学金山学院《金融科技》2025-2026学年期末试卷
- 福建农林大学金山学院《工程材料》2025-2026学年期末试卷
- 2026年荆门市东宝区社区工作者招聘考试参考题库及答案解析
- 2026年洛阳市涧西区社区工作者招聘笔试备考试题及答案解析
- 2026年江门市蓬江区社区工作者招聘笔试模拟试题及答案解析
- 2026年沈阳市苏家屯区社区工作者招聘考试备考题库及答案解析
- 2026年威海市环翠区社区工作者招聘笔试参考试题及答案解析
- (新)设计院管理制度规章制度(3篇)
- 2026年四川省成都市社区工作者招聘考试备考试题及答案解析
- 工业机器人职业生涯发展规划
- 《纺织材料生产》课件-项目7:短纤工段
- (正式版)SHT 3046-2024 石油化工立式圆筒形钢制焊接储罐设计规范
- 吸附计算完整
- 红旗H7汽车说明书
- 门静脉高压症讲解
- 《神表》-孙老师收费完全版:职称英语顺利过关的必备利器
- 怒江水电开发的工程伦理案例分析
- 《答司马谏议书》课件(21张PPT)
- GB/T 3906-20203.6 kV~40.5 kV交流金属封闭开关设备和控制设备
- GA 1277.1-2020互联网交互式服务安全管理要求第1部分:基本要求
评论
0/150
提交评论