周期中断程序设计:硬件中断与服务子程序设置

需积分: 48 1 下载量 60 浏览量 更新于2024-07-12 收藏 650KB PPT 举报
周期中断是计算机硬件中一种重要的功能,它允许处理器在执行过程中响应预先设定的、定期发生的事件。在实模式下,中断系统负责处理各种突发的中断请求,这些请求可以来自外部或内部,如不可屏蔽中断NMI(Non-Maskable Interrupt)和可屏蔽中断INTR,以及微处理器产生的中断和软件中断。 在编写周期中断程序时,首先需要设置一个用户等待标志,这通常是一个字节的数据结构,用于指示中断发生后的后续操作。然后,利用INT 15H的83H号功能来设置等待时间,通过输入参数AH和AL,指定中断服务的地址和等待时间(以微秒为单位),并将结果存储在ES:BX或CX:DX中。如果设置中断成功,函数返回时CF(Carry Flag)会清零,表示设置完成;反之,如果设置失败,则CF会被设置为1。 中断允许标志(IF)在这里扮演关键角色,尤其是在处理可屏蔽中断INTR时。通过将中断允许标志PIE置1,CPU将允许周期中断的发生,即每976微秒请求一次中断。这种方式常用于定时器或者其他需要按预定频率触发中断的应用场景。 中断服务子程序是中断程序设计的核心,它需要被编写成中断函数的形式,如`void interrupt myint(void)`,并提前声明。自定义中断函数在使用前需要进行函数声明,以确保编译器能够正确识别。 另外,设置中断向量是中断程序设计的另一个重要环节。通过`void setvect(int num, void interrupt(*isr)())`函数,程序员将中断服务子程序的地址存储到内存中的中断向量表中。中断向量表是1024字节大小,每个中断类型号占用4个字节,当CPU接收到中断请求时,会根据中断类型号找到对应的中断服务程序地址并执行。 周期中断程序设计涉及中断服务子程序的编写、中断类型的管理、中断标志的设置以及中断向量的设置。这是一项精细而关键的工作,对于理解和控制计算机系统的运行流程具有重要意义。在实际应用中,根据具体需求,开发者需灵活运用这些技术,以实现高效、可靠的系统设计。