Intrupts
Interrupts are used to demand attention
from the CPU. There are processor, hardware and software driven interrupts.
The PC was designed as an interrupt driven system. Communications between
the CPU, hardware and software occurs by means of of flags or interrupts
which signal when a device or piece of software needs attention from
the CPU. The PC is limited to 256 interrupts each of which receives
a number. The Programmable Interrupt Controller (PIC) controls which
interrupt gets the attention of the CPU and when. Basically, the lower
numbered interrupts receive attention from the CPU before the higher
numbered interrupts. The PC interrupts can be divided into six categories:
1. Processor Interrupts
- Interrupts 00h to 07h are called by the processor directly, but can
also be called from software using the INT instruction.
2. Hardware Interrupts
- The hardware interrupts differ from all the software interrupts in
that they have a direct channel to the processor thorough an Interrupt
Request Line or IRQ. There are 16 IRQ lines on PC's (there are 8 IRQ
lines on 8086/8088 based computers). These lines are hardwired on the
motherboard and directly access the processor. The 8259 Programmable
Interrupt Controller or PIC on the motherboard manages all the hardware
interrupts. These controllers receive the requests from the various
devices and pass the request along to the processor after converting
them to specific instructions.
This allows a device or subsystem to work
in the background until a particular event occurs that demands attention,
like a keystroke or sound. An interrupt is created by asserting a logic
level on an Interrupt Request (IRQ) line. This lines are accessed from
any of the computers bus slots. An XT computer had 8 IRQ's, while the
AT provides 16. These lines are controlled through the Programmable
Interrupt Controller which in turn triggers the desired interrupt request
to the CPU. Below is a listing of the hardware interrupts for a PC compatible
computer:
|
IRQ
|
Interrupt
|
Function
|
|
0
|
08h
|
System timer IC
|
|
1
|
09h
|
Keyboard controller
IC
|
|
2
|
0Ah
|
Second IRQ controller
IC
|
|
3
|
0Bh
|
Serial port 2 (COM
2: 2F8h-2FFh and COM 4: 2E8h-2EFh) or hardware modem use
|
|
4
|
0Ch
|
Serial port 1 (COM
1: 3F8h-3FFh and COM 3: 3E8h-3EFh) or serial port mouse use
|
|
5
|
0Dh
|
Parallel port 2
(LPT 2: 378h or 278h) or general adapter use (typically used for
sound cards)
|
|
6
|
0Eh
|
Floppy disk controller
|
|
7
|
0Fh
|
Parallel port 1
(LPT 1: 3BCh [mono] or 378h [color]
|
|
8
|
70h
|
Real time clock
or RTC
|
|
9
|
71h
|
Unused (redirected
to IRQ 2)
|
|
10
|
72h
|
USB on systems
so equipped (can be disabled) or general adapter use
|
|
11
|
73h
|
Windows sound system
on systems so equipped (can be disabled) or general adapter use
|
|
12
|
74h
|
Motherboard mouse
port on systems so equipped or general adapter use
|
|
13
|
75h
|
Math coprocessor
|
|
14
|
76h
|
Primary AT/IDE
hard disk controller
|
|
15
|
77h
|
Secondary AT/IDE
hard disk controller on systems so equipped (can be disabled)
or general adapter use
|
An AT systems uses IRQ 2 on the motherboard
so instead of leaving it empty, IRQ 9 now is wired to this IRQ, in effect,
cascading, or redirecting, the IRQ. So IRQ 9 is now redirected to IRQ
2. When a interrupt request is made, the CPU saves the current state
of registers in a small amount of memory called the stack, then the
CPU is directed to the interrupt vector table, which is a list of program
locations that represent each interrupt. Here, the CPU locates the interrupt
handler for the desired interrupt request and executes the routine.
Once the desires task is finished, the prior register contents are popped
from the stack they are being held in and the CPU will continue with
it's task it was performing prior to the interrupt.
3. Software Interrupts
- These interrupts are generated by the ROM BIOS during the start up
of the computer. These interrupts are used for general low-level services.
4. DOS Interrupts
- These interrupts are available when DOS is running and provide additional
routines for enhanced access to devices and other resources.
5. ROM Basic Interrupts
- These interrupts are available when Basic is running.
6. General use Interrupts
- These interrupts are available for use by other programs.
Interrupt Vector Table
- When power is applied to a computer, the POST procedure creates a
table of interrupt vectors that is 1024 bytes and contains a maximum
of 256 interrupts. This table lists pointers to interrupt service routines.
The interrupt vector table starts at memory location 0000:0000h and
ends at 0000:03FCh. An interrupt vector is a 4-byte value of the form
offset;segment, which represents the address of a routine to be called
when the CPU receives an interrupt. The interrupt vector table is first
initialized by the start up ROM but changes are made to it's contents
as the first ROM Extensions and later the operating system files are
loaded. The ability to update the contents of the interrupt vector table
provides a means to easily expand operating system services.
|
Interrupt
|
Address
|
Type
|
Function
|
|
00h
|
0000:0000h
|
Processor
|
Divide By Zero
|
|
01h
|
0000:0004h
|
Processor
|
Single Step
|
|
02h
|
0000:0008h
|
Processor
|
Nonmaskable Interrupt
(NMI)
|
|
03h
|
0000:000Ch
|
Processor
|
Breakpoint Instruction
|
|
04h
|
0000:0010h
|
Processor
|
Overflow Instruction
|
|
05h
|
0000:0014h
|
BIOS/Software
|
Print Screen
|
|
05h
|
0000:0014h
|
Hardware
|
Bounds Exception
(80286, 80386)
|
|
06h
|
0000:0018h
|
Hardware
|
Invalid Op Code
(80286, 80386)
|
|
07h
|
0000:001Ch
|
Hardware
|
Math Coprocessor
Not Present
|
|
08h
|
0000:0020h
|
Hardware
|
Double Exception
Error (80286, 80386) (AT Only)
|
|
08h
|
0000:0020h
|
Hardware
|
System Timer -
IRQ 0
|
|
09h
|
0000:0024h
|
Hardware
|
Keyboard - IRQ
1
|
|
09h
|
0000:0024h
|
Hardware
|
Math Coprocessor
Segment Overrun (80286, 80386) (AT Only)
|
|
0Ah
|
0000:0028h
|
Hardware
|
IRQ 2 - Cascade
from Second programmable Interrupt Controller
|
|
0Ah
|
|
Hardware
|
Invalid Task Segment
State (80286, 80286) (AT Only)
|
|
0Ah
|
|
Hardware
|
IRQ 2 - General
Adapter Use (PC Only)
|
|
0Bh
|
0000:002Ch
|
Hardware
|
IRQ 3 - Serial
Communications (COM 2)
|
|
0Bh
|
|
Hardware
|
Segment Not Present
(80286, 80386)
|
|
0Ch
|
0000:0030h
|
Hardware
|
IRQ 4 - Serial
Communications (COM 1)
|
|
0Ch
|
|
Hardware
|
Stack Segment Overflow
(80286, 80386)
|
|
0Dh
|
0000:0034h
|
Hardware
|
Parallel Printer
(LPT 2) (AT Only)
|
|
0Dh
|
|
Hardware
|
IRQ 5 - Fixed Disk
(XT Only)
|
|
0Dh
|
|
Software
|
General Protection
Fault (80286, 80386)
|
|
0Eh
|
0000:0038h
|
Software
|
IRQ 6- Diskette
Drive Controller
|
|
0Eh
|
|
Software
|
Page Fault (80386
Only)
|
|
0Fh
|
0000:003Ch
|
Software
|
IRQ 7 - Parallel
printer (LPT 1)
|
|
10h
|
0000:0040h
|
Software
|
Video
|
|
10h
|
|
Software
|
Numeric Coprocessor
Fault (80286, 80386)
|
|
11h
|
0000:0044h
|
Software
|
Equipment List
|
|
12h
|
0000:0048h
|
Software
|
Memory Size
|
|
13h
|
0000:004Ch
|
Software
|
Fixed Disk/ Diskette
|
|
14h
|
0000:0050h
|
Software
|
Serial Communication
|
|
15h
|
0000:0054h
|
Software
|
System Services
|
|
16h
|
0000:0058h
|
Software
|
Keyboard
|
|
17h
|
0000:005Ch
|
Software
|
Parallel Printer
|
|
18h
|
0000:0060h
|
Software
|
Load ROM Basic
(PC Only)
|
|
18h
|
|
Software
|
Process Boot Failure
(XT, AT)
|
|
19h
|
0000:0064h
|
Software
|
Boot Strap Loader
|
|
1Ah
|
0000:0068h
|
Software
|
Time of Day
|
|
1Bh
|
0000:006Ch
|
Software
|
Keyboard Break
|
|
1Ch
|
0000:0070h
|
User
|
User Timer Tick
|
|
1Dh
|
0000:0074h
|
BIOS Table
|
Video Parameter
Table
|
|
1Eh
|
0000:006Ch
|
BIOS Table
|
Diskette parameter
table
|
|
1Fh
|
0000:007Ch
|
User
|
Video Graphics
Characters
|
|
20h-3Fh
|
0000:0080h - 0000:00FCh
|
Software
|
Reserved for DOS
|
|
40h
|
0000:0100h
|
Software
|
Diskette Boot Revector
|
|
41h
|
0000:0104h
|
BIOS Table
|
Fixed Disk Parameter
Table
|
|
42h
|
0000:0108h
|
BIOS Table
|
EGA Default Video
Driver
|
|
43h
|
0000:010Ch
|
User
|
Video Graphics
Characters
|
|
44h - 45h
|
0000:0110h - 0000:0114h
|
Software
|
Reserved
|
|
46h
|
0000:0118h
|
BIOS Table
|
Fixed Disk Parameter
Table
|
|
47h - 49h
|
0000:011Ch - 0000:0124h
|
Software
|
Reserved
|
|
4Ah
|
0000:0128h
|
User
|
User Alarm
|
|
4Bh - 6Fh
|
0000:012Ch - 0000:01BCh
|
Software
|
Reserved
|
|
70h
|
0000:01C0h
|
Hardware
|
IRQ 8 - Real Time
Clock
|
|
71h
|
0000:01C4h
|
Hardware
|
IRQ 9 - Redirect
Cascade
|
|
72h
|
0000:01C8h
|
Hardware
|
IRQ 10 - General
Adapter Use
|
|
73h
|
0000:01CCh
|
Hardware
|
IRQ 11 - General
Adapter Use
|
|
74h
|
0000:01D0h
|
Hardware
|
IRQ 12 - General
Adapter Use/ PS/2 Mouse
|
|
75h
|
0000:01D4h
|
Hardware
|
IRQ 13 - Math Coprocessor
Exception
|
|
76h
|
0000:01D8h
|
Hardware
|
IRQ 14 - Primary
Hard Disk Controller
|
|
77h
|
0000:01DCh
|
Hardware
|
IRQ 15 - Secondary
Hard Disk Controller / General Adapter Use
|