up:
Chapter 14 -- 80386 Real-Address Mode
prev: 14.2 Registers and Instructions
next: 14.4 Entering and Leaving Real-Address Mode
14.3 Interrupt and Exception Handling
Interrupts and exceptions in 80386 real-address mode work as much as they
do on an 8086. Interrupts and exceptions vector to interrupt procedures via
an interrupt table. The processor multiplies the interrupt or exception
identifier by four to obtain an index into the interrupt table. The entries
of the interrupt table are far pointers to the entry points of interrupt or
exception handler procedures. When an interrupt occurs, the processor
pushes the current values of CS:IP onto the stack, disables interrupts,
clears TF (the single-step flag), then transfers control to the location
specified in the interrupt table. An IRET instruction at the end of the
handler procedure reverses these steps before returning control to the
interrupted procedure.
The primary difference in the interrupt handling of the 80386 compared to
the 8086 is that the location and size of the interrupt table depend on the
contents of the IDTR (IDT register). Ordinarily, this fact is not apparent
to programmers, because, after RESET, the IDTR contains a base address of 0
and a limit of 3FFH, which is compatible with the 8086. However, the
LIDT
instruction can be used in real-address mode to change the base and limit
values in the IDTR . Refer to
Chapter 9
for details on the IDTR , and the
LIDT and SIDT instructions.
If an interrupt occurs and the corresponding
entry of the interrupt table is beyond the limit stored in the IDTR, the
processor raises exception 8.
up:
Chapter 14 -- 80386 Real-Address Mode
prev: 14.2 Registers and Instructions
next: 14.4 Entering and Leaving Real-Address Mode