The 386 recognizes two event classes: exceptions and interrupts. Both
cause a forced context switch to new a procedure or task. Interrupts can
occur at unexpected times during the execution of a program and are
used to respond to signals from hardware. Exceptions are caused by
the execution of instructions.
Two sources of interrupts are recognized by the 386: Maskable
interrupts and Nonmaskable interrupts. Two sources of exceptions are
recognized by the 386: Processor detected exceptions and programmed
exceptions.
Each interrupt or exception has a number, which is referred to
by the 386 literature as the vector. The NMI interrupt and the
processor detected exceptions have been assigned vectors in the range 0
through 31, inclusive. The vectors for maskable interrupts are
determined by the hardware. External interrupt controllers put the
vector on the bus during the interrupt-acknowledge cycle. Any vector
in the range 32 through 255, inclusive, can be used for maskable
interrupts or programmed exceptions. See figure~#figintassign#1770>
for a listing of all the possible interrupts and exceptions.
<#1771#> [Check all this out to make sure that it is right.]<#1771#>
#figure1772#
Figure: Interrupt and Exception Assignments
#figure1779#
Figure: Priority of simultaneous interrupts and exceptions