基本信息
文件名称:第八章输入输出程序设计.ppt
文件大小:8.58 MB
总页数:59 页
更新时间:2025-11-02
总字数:约7.49千字
文档摘要

使用DOS功能调用(21H)存取中断向量例8.4 使用DOS功能调用存取中断向量第29页,共59页,星期日,2025年,2月5日8.3.3中断过程当中断发生时,由中断机构自动完成下列操作:取中断类型号N;标志寄存器(FLAGS)内容入栈;当前代码段寄存器(CS)内容入栈;当前指令指针寄存器(IP)内容入栈;禁止硬件中断和单步中断(IF=0,TF=0);从中断向量表中取4×N的字内容送IP,取4×N+2的字内容送CS;转中断处理程序。如图8.7的中断过程示意图。第30页,共59页,星期日,2025年,2月5日8.3.4中断优先级和中断嵌套8086规定的中断优先级次序为:优先级 高 软件中断(除法错,INTO,INT) 非屏蔽中断(NMI) 可屏蔽中断(INTR) 低 单步中断可屏蔽中断的优先权分为八级,正常情况下,优先级次序是:IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7定时器 打印机优先级高 低第31页,共59页,星期日,2025年,2月5日8259A的中断命令寄存器控制优先级8259A的中断命令寄存器的第6、7位控制各种中断请求的优先级次序。R SL0 0 正常优先级方式0 1 清除由L2~L0指定的中断请求1 0 各中断优先级依次左循环一个位置1 1 各中断优先级依次循环到由L2~L0指定的中断 请求到达最低优先级位置上 ;使优先级次序再左循环一个位置MOV AL,OUT 20H,AL ;IR6,IR7,IR0,IR1,IR2,IR3,IR4,IR5第32页,共59页,星期日,2025年,2月5日中断嵌套中断嵌套:正在运行的中断处理程序,又被其他中断源中断的情况。80x86没有规定中断嵌套的深度(中断程序又被中断的层次),实际受堆栈容量的限制。一个中断处理程序,在开中断的情况下,可以被优先级高于它的中断源中断。只有发出了EOI命令,清除正在执行的中断请求,才可以响应同级或低级的中断。如图8.8所示:正常优先级方式下,优先级中断和中断嵌套发生时的处理过程。第33页,共59页,星期日,2025年,2月5日8.3.5中断处理程序主程序为响应中断所做的准备工作以及硬件(包括CPU和外设接口)自动完成以下动作:第34页,共59页,星期日,2025年,2月5日中断响应的特殊情况注意:设备发到CPU的中断请求信号在时间上是随机的,只要未被屏蔽的设备本身的状态是准备好或空闲的,它就会向CPU请求中断,如果此时CPU正在执行一条指令,那么要等到这条指令执行完后,才响应中断。加封锁的指令(如LOCKMOVAX,BX)应看作一条指令;对加重复前缀的指令(如REPMOVSB)要作为一个整体来处理,执行一次重复串指令即可响应中断;对MOV、POP指令,如果处理对象是段寄存器,那么执行完本条指令后,接着再执行一条指令才响应中断。对STI和IRET指令,也要在该指令执行完后,再执行一条指令才响应中断。第35页,共59页,星期日,2025年,2月5日中断处理子程序中断处理子程序的编写步骤:保存寄存器内容;如允许嵌套,则开中断(STI);处理中断;关中断(CLI);送中断结束命令(EOI)给中断命令寄存器;恢复寄存器内容;返回被中断的程序(IRET)。注意:CPU产生一次中断,I/O设备只完成一个字节(或字)的输入输出,所以中断处理程序所用的指针变量或数据变量一般应设置存储单元来保存。第36页,共59页,星期日,2025年,2月5日中断程序设计举例例8.5 响铃 P300-303例8.6 键盘输入、打印机输出 P303-310例8.7 P310-313除数为0的中断处理程序 第37页,共59页,星期日,2025年,2月5日练习与作业P313-314习题练习: 8.5、8.6提交作业: 8.12第38页,共59页,星期日,2025年,2月5日I/O接口电路示意图处理器数据寄存器状态寄存器控制寄存器输入输出设备数据总线控制总线地址总线外设数据状态信号控制信号I/O接口电路第39页,共59页,星期日,2025年,2月5日表8.1I/O端口地址分配第40页,共59页,星期日,2025年,2月5日例8.1发声程序-1这是一个最基本的控制扬声器发出声音的子程序。通过I/O指令使设备控制寄存器(