As a result of the design decisions made in the earliest PCs, memory is broken into the following four basic pieces (with some of the pieces being divided further):
After the BIOS transfers control to boot sector, the first megabyte of memory looks like this:
Address | Size | Name |
0x0000:0x0000 | 1024 bytes | Interrupt Vector Table |
0x0040:0x0000 | 256 bytes | BIOS Data Area |
0x0050:0x0000 | ? | Free memory |
0x07C0:0x0000 | 512 bytes | Boot sector code |
0x07E0:0x0000 | ? | Free memory |
0xA000:0x0000 | 64 Kb | Graphics Video Memory |
0xB000:0x0000 | 32 Kb | Monochrome Text Video Memory |
0xB800:0x0000 | 32 Kb | Color Text Video Memory |
0xC000:0x0000 | 256 Kb1 | ROM Code Memory |
0xFFFF:0x0000 | 16 bytes | More BIOS data |
Here is another detailed version of memory map.
A Complete Map: (from http://my.execpc.com/~geezer/osd/ram/)
linear address range | real-mode address range | memory type | use |
---|---|---|---|
0- 3FF | 0000:0000-0000:03FF | RAM | real-mode interrupt vector table (IVT) |
400- 4FF | 0040:0000-0040:00FF | BIOS data area (BDA) | |
500- 9FBFF | 0050:0000-9000:FBFF | free conventional memory (below 1 meg) | |
9FC00- 9FFFF | 9000:FC00-9000:FFFF | extended BIOS data area (EBDA) | |
A0000- BFFFF | A000:0000-B000:FFFF | video RAM | VGA framebuffers |
C0000- C7FFF | C000:0000-C000:7FFF | ROM | video BIOS (32K is typical size) |
C8000- EFFFF | C800:0000-E000:FFFF | NOTHING | |
F0000- FFFFF | F000:0000-F000:FFFF | ROM | motherboard BIOS (64K is typical size) |
100000- FEBFFFFF | RAM | free extended memory (1 meg and above) | |
FEC00000- FFFFFFFF | various | motherboard BIOS, PnP NVRAM, ACPI, etc. |
The table of interrupt vectors begins at the very start of the microprocessors memory address 00000. (each interrupt vector is a pointer that tells the microprocessor the location where the code associated with the interrupt is located).
BIOS Data Area: This BIOS data area comprises of 256 bytes of memory starting at absolute memory location 000400.
Standard VGA Video ROM Code: C0000 - C7FFF (32K)
Rom Code Memory (BIOS Extension): 0C8000-0F4000.
System BIOS: F0000 - FFFFF (64K)
System Identification Bytes: 0FFFFE - 0FFFFF
There are 2 bytes assigned to identify the system. These are known as Model Byte and the Submodel Byte. The model byte is located at absolute memory address 0FFFFE (hex) and the Submodel Byte follows it.
SYSTEM MODEL BYTE SUBMODEL BYTE
Model | Model Byte | Submodel Byte |
PC | FF | - |
Portable PC | FE | 00 |
XT model 256 | FC | 02 |
PS/2 model 30 | FA | 00 |
PS/2 model 60 | FC | 04 |
PS/2 model 80 | F8 | 01 |