开始主程序可屏蔽硬中断程序流程图CLI关中断中断子程保存原中断向量开始设置新中断向量保存现场设置8259A的中断屏蔽字中断子程完成中断源有关量的初始化申请的任务STI开中断发中断结束命令EOI主程其它工作处理恢复现场(可用双重循环延时代替)恢复原中断向量IRET中断返回返回DOS
返回DOS CLI关中断 保存原中断向量 设置新中断向量 设置8259A的中断屏蔽字 中断子程 有关量的初始化 STI开中断 主程其它工作处理 (可用双重循环延时代替 ) 恢复原中断向量 开始 主程序 保存现场 发中断结束命令EOI 完成中断源 申请的任务 恢复现场 IRET中断返回 开始 中断子程 可屏蔽硬中断程序流程图
例2利用连接在8259AIR0上的时钟信号,编写具有定时功能程序,要求每隔5秒在屏蔽上显示一个字符:A'。-18.2Hz方波IRO808808h当前中断8259A服务寄存器IFINTINTR主板中断屏蔽寄存器
例2 利用连接在8259A IR0上的时钟信号, 编写具有定时功能程序, 要求每隔5秒在屏蔽上显示一个字符 ’A’。 8088 INTR 主 板 IF 18.2Hz 方波 8259A INT 中断屏蔽寄存器 IR0 当前 中断 服务 寄存器 08h
分析口时钟信号接在IR0上,申请的中断类型号为08H。口时钟信号是一个频率为18.2HZ的方波信号即每秒向8259A发出18.2次的中断申请,如果CPU响应该中断申请则以每秒18.2次的频率执行08H类型的中断子程。IRO个18.2Hz方波信号INTINTR8259A8088
时钟信号接在IR0上,申请的中断类型号为08H。 时钟信号是一个频率为18.2HZ的方波信号, 即每秒向8259A发出18.2次的中断申请。 如果CPU响应该中断申请, 则以每秒18.2次的频率执行08H类型的中断子程。 分析 8088 8259A INTR IR0 18.2Hz方波信号 INT
日中断申请的任务是每5秒显示一个字符’A”1秒执行18.2次,则5秒执行18.2×5=91次,只在执行到第91次时显示”A’,其它不显示口在中断子程中用一个量来计数中断子程被执行的次数即CPU响应IRO中断申请的次数。当达到91次,则显示”A,,并将计数值清0,重新计数其它情况只计数,不显示A。口中断子程的最后应发中断结束命令EOI
中断申请的任务是每5秒显示一个字符’A’ 1秒执行18.2次,则5秒执行18.2×5=91次, 只在执行到第91次时显示’A’,其它不显示。 在中断子程中用一个量来计数中断子程被执行的次数, 即CPU响应IR0中断申请的次数。 当达到91次,则显示’A’,并将计数值清0,重新计数; 其它情况只计数,不显示’A’。 中断子程的最后应发中断结束命令EOI
中断子程主程序开始开始CLI关中断保存现场保存原08H中断向量中断子程被执行一次CX- CX+1设置新08H中断向量N到91次,即5秒时间到?设置8259A的中断屏蔽字,允许IR0中断Y08H中断子程调02HDOS功能CX执行次数初值0显示字符‘A”STI开中断CX←0重新记数主程其它工作处理(可用双重循环延时代替)发中断结束命令EOI恢复原08H中断向量恢复现场返回DOSIRET中断返回
主程序 中断子程 CLI关中断 保存原08H中断向量 设置新08H中断向量 设置8259A的中断屏蔽字,允许IR0中断 08H中断子程 执行次数初值0 STI开中断 主程其它工作处理 (可用双重循环延时代替) 恢复原08H中断向量 返回DOS 开始 CX 发中断结束命令EOI 恢复现场 IRET中断返回 保存现场 开始 中断子程被执行一次 CX← CX+1 N Y 调02HDOS功能 显示字符‘A’ CX ← 0 重新记数 到91次,即5秒时间到?