Memory Layout and Memory Map

 

Memory Layout Overview:

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):

 

Memory Map

 

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