8259a

 

主程序与中断服务程序的关系
         主程序与中断服务程序的关系有些类似于主程序与常规子程序之间的关系,在调用时都要保护断点,保护现场;返回时都要恢复现场,恢复断点。但是中断服务程序的调用与返回更复杂,要处理的任务更多 , 中断调用往往具有实时性和随机性的特点。
 
         1 .主程序
         主程序要对整个处理过程进行控制,包括主程序本身任务的执行,外部设备的初始化,主程序与中断服务程序之间的转换。主程序要为中断进行各种初始化设置,一般要进行如下操作:
            (1) 中断矢量的设置或装入,用户自己编写的中断服务程序 的入口地址要由用户自己装入到中断矢量表中。
 
        (2) 设置 8259A 的中断屏蔽寄存器,决定哪些中断被开 放,哪些中断被禁止。
        (3) 设置 CPU FLAG 寄存器的中断允许标志 IF ,决定对 INTR 可屏蔽中断的允许或禁止。
 
         2 .中断服务程序
            中断服务程序要完成中断源所要求的具体操作,不同的中 断源所要实现的操作各不相同,但是所有中断服务程序都要执 行下列操作。
 
         (1) 在中断服务程序的开始处,首先利用压栈指令 PUSH 保护现场,即保护 CPU 中有关寄存器的内容以及中断服务程序中要使用的其它寄存器中的内容。
         (2) 如果要真正实现中断嵌套,则进入中断服务程序后要使用 STI 指令开中断 ( 使 IF 1) ,以便在中断处理过程中允许优先级别更高的中断源提出中断申请并得到响应。
 
        (3) 执行中断处理程序,实现中断源所要求的具体操作,这是中断服务程序的目的所在。
        (4) 中断处理模块执行完之后,用 CLI 指令关中断 ( 使 IF 0) ,以便在下面进行现场恢复时暂时禁止其它中断的进入。
 
        (5) 恢复现场,通过一系列的出栈指令 POP 将保护在堆栈中的现场信息予以恢复。
        (6) STI 指令开中断 ( 使 IF 1) ,允许其它中断源的中断请求。
        (7) 执行中断返回指令 IRET ,返回主程序。如果采用的是非自动中断结束方式,则在中断返回前还要执行中断结束命令 EOI ,使中断服务寄存器 ISR 中相应的位复位。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值