14.3 中断和异常处理

80386实地址模式下的中断和异常处理与8086是一样的。中断和异常通过中断表指向处理函数。处理器将中断和异常标识符乘以4来获得其在中断表的索引。中断表是指向处理函数的长指针。当中断发生时,处理器将CS:IP压栈,关中断,清TF(单步标志位),然后将控制权交给中断表指向的函数。在处理函数末尾的IRET执行相反的过程,并将控制权交还给被中断的进程。

80386的中断处理与8086的最大不同之处在于中断表的位置和大小,这取决于IDTR(IDT寄存器)的内容。通常,这对于程序员来说没有影响,因为在上电复位后,IDTR被设置成基地址等于0,上限值等于3FFH,这与8086是兼容的。不过可以在实地址模式下使用LIDT指令来改变基地址和上限值。有关IDTR和LIDT,SIDT指令的详细信息参加第九章。如果中断表的值超出了IDTR中设置的上限值,处理器产生异常8。