CS 2650 - PC Architecture

For help with Interrupt Vector Addresses:

The Interrupt Vector Table (IVT) in the 8088 architecture is used to transfer processing to
a new location in memory as a result of a hardware or software interrupt being generated.

In the Intel 8088 16 bit architecture, the IVT is located in the first 1024 bytes of RAM.
It consists of 256, 4 byte address entries stored in little endian format, with the offset first
and the segment last.
Each address corresponds to an interrupt. The first 4 bytes contain the address to the
routine for Interrupt 0H, the next 4 bytes for Interrupt 1H and so on to Interrupt FFH.

Below, are a set of instructions on how to determine the vector for a given interrupt
and how to convert that segment:offset address into a 20 bit address.

C:\WINDOWS>debug
-D 0000:0000
0000:0000  F0 C1 D0 03 65 04 70 00-16 00 29 DE 65 04 70 00   ....e.p...).e.p.
0000:0010  65 04 70 00 54 FF 00 F0-4C E1 00 F0 6F EF 00 F0   e.p.T...L...o...
0000:0020  00 00 1D 0B 28 00 29 DE-6F EF 00 F0 6F EF 00 F0   ....(.).o...o...
0000:0030  6F EF 00 F0 6F EF 00 F0-9A 00 29 DE 65 04 70 00   o...o.....).e.p.
0000:0040  09 00 A9 0B 4D F8 00 F0-41 F8 00 F0 10 05 51 02   ....M...A.....Q.
0000:0050  39 E7 00 F0 3A 05 51 02-2D 04 70 00 28 0A E3 D4   9...:.Q.-.p.(...
0000:0060  D4 E3 00 F0 2F 00 A3 03-6E FE 00 F0 04 06 E3 D4   ..../...n.......
0000:0070  1D 00 1D 0B A4 F0 00 F0-22 05 00 00 CE 50 00 C0   ........"....P..
-

For interrupt 11H

1.  Convert 11H to 17
2.  Multiply 17 by 4 = 68
3.  Convert 68 to Hex = 44H
4.  OR Multiply 11H by 4 = 44H
5.  Lookup in vector table at the address 0000:0040 line over to 0044
6.  Read Vector address in backward format 4D F8 00 F0
7.  Convert to segment offset address.
8.  Correct segment offset address = F000:F84D
9.  For 20 bit address add a zero to segment (left) portion of address
10.  Add to offset  F0000 + F84D
11.  Correct 20 bit address = FF84D
12.  For base 10 address convert 20 bit address to decimal
13.  Correct decimal address = 1046605

For interrupt 07H
 7H * 4 = 1CH
 Segment Offset address = F000:EF6F
 20 bit address = FEF6F
 Decimal address = 1044335

For interrupt 1BH
 1BH * 4 = 6CH
 Segment Offset address = D4E3:0604
 20 bit address = D5434
 Decimal address =  873524

For interrupt 10H
 10H * 4 = 40H
 Segment Offset Address = 0BA9:0009
 20 bit address = BA99
 Decimal address = 47769