中断发生时候,CPU自动调用相应的中断处理程序,这些中断处理程序的入口指针(被称作中断向量)一般被放在一个指定的位置,比如BIOS中断向量放在地址0-1K的空间内,每4个字节存放一个中断向量.而在保护模式下,BIOS中断不可用,中断向量被放在IDT中,当一个中断发生时,CPU将中断号作为索引到相应的中断处理程序表中(BIOS中断向量表(实模式)或IDT(保护模式))找到相应的中断处理程序的指针,并执行它.
另外,中断处理程序用C/C++还是ASM,还是机器语言写的并不重要,因为编译之后都是二进制机器指令或数据.但如果你的中断处理程序有空间和效率的限止,则一般使用汇编语言写,比如BIOS中断处理程序都是用汇编写的,被放在0xB0000-0xFFF00之间,而保护模式下,被OS开发者写的中断处理程序一般都是用C写的,比如linux.这些都不重要.
还有就是,BIOS中断处理程序被固化在ROM中,但BIOS中断向量表却是在PC启动时被POST(Power-On Self Test,是一段被固化在ROM中的程序)初始化在RAM中的,因此,你可以修改这些向量,让它们指向你自己写的程序.这样当中断发生时, CPU就会执行你所写的中断处理程序.
对于那些针对硬件操作的中断处理程序,我们看起来只要调用这些中断,就可以达到对硬件操作的效果(比如磁盘操作,显示器操作等等),但事实上,这只不过是中断处理程序直接调用I/O操作(in或out指令)来帮你完成了这一切罢了.