中断例程可以执行由任何其他函数执行的任何任务,包括访问全局变量、分配局部变量和调用其他函数。
编写中断例程时,请谨记以下要点:
- 中断处理例程不能有参数。如果声明了任何参数,则会被忽略。
- 中断处理例程可以被普通 C/C++ 代码调用,但是这样做效率很低,因为所有的寄存器都已保存。
- 中断处理例程可以处理单个中断或多个中断。编译器不会生成特定于某个中断的代码,c_int00 除外,它是系统复位中断。当您进入此例程时,您不能假设运行时栈已设置;因此,您不能分配局部变量,也不能在运行时栈上保存任何信息。
- 若要将中断例程与中断关联,中断函数的地址必须放置在适当的中断矢量中。通过使用 .sect 汇编器指令创建一个简单的中断地址表,您可以使用汇编器和链接器来完成此操作。
- 在汇编语言中,请记住在符号名称之前加上下划线。例如,将 c_int00 表示为 _c_int00。