Port Addresses: The IBM PC accesses I/O ports separately from memory. The 80x8x CPU can address 65536 ports, but the original PC only used 10 bits -- 1024 possible ports -- for port addressing and the ISA bus itself provides only 12 bits. A lot of hardware was designed that assumed only 10 or 12 bits of addressing and might interfere (by "address aliasing") with ports above address 3FF or FFF. So for practical purposed, only 1024 ports of 4096 are fully available. Full 16 bit addresses are available and are used on the PCI bus. Port addresses are conventionally given in hexadecimal.

The original PC assigned Ports 000-0FF to the motherboard and 200-3FF to peripherals. This distinction is no longer important, but is somewhat adhered to. Ports 100-1FF were write only in the original PC but became readable in most later machines.

Many Port addresses are fixed by convention at those used in the IBM PC, the PC XT or the PC AT. Others are restricted to certain address ranges set by jumpers or software. The following are some of the more common Port Assignments:

Port Device
entry1a entry1b
000-00F DMA Controller
010 POST Checkpoint in PC (See Port 80)
020-021 Interrupt Controller
022-023 CPU and Chipset
040-043 Programmable Timer
060-064 Keyboard Controller and Misc functions incl PS/2 mouse
071 NMI Control - CMOS Access
080 POST Checkpoint in AT and above (See Port 10)
081-083 DMA Page Registers
0A0 NMI on PC/PC XT?
0C2 DMA Ch3 Device Select
170-177 Secondary IDE Controller
1F0-1F7 Primary IDE Controller
201 Gameport
210-215 Extender cards in original PC
278-27F LPT3
2E8- Some Video Cards (also 12E8, 22E8, etc)
2E8-2EF COM4
2F8-2FF COM2
300 EISA BIOS Checkpoint (Award)
300-3?? Default port address on many network cards
320-330 MFM/RLL Disk Controllers on PC/PC XT
374 IEEE 1149 Boundary Scan Test
378-37F LPT2
380-389 SDLC2 Port (rare)
380-38C SDLC1 Port (rare)
3A0-3A9 Binary Synchronous Adapter (rare)
3B0-3BB Mono Video
3D0-3DC CGA/EGA Video
3E8-3EF COM3
3F0-3F5 Floppy Disk Controller
3F8-3FF COM1
A79 ISA PNP write only

Several common peripherals such as Network cards and Sound Cards do not have fixed Port addresses and are configured by selecting from a list of possible base addresses. For example, many network cards allow a variety of addresses at 32 bit intervals e.g. 300, 320, 340, 360.

Return To Index Copyright 1994-2008 by Donald Kenney.