General Memory Map

     Overview of the general memory-layout of PC/XT/AT while operating.

Address   Name / Description
▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
          ┌─────────────────────────────────────────────────────────────────
0000:0000 │ Interrupt vector table: 256 4-byte addresses
──────────┼─────────────────────────────────────────────────────────────────
0040:0000 │ ROM-BIOS data area.
──────────┼──────────────────────── See  BIOS Data Area  for details
0050:0000 │ DOS data area.
──────────┼─────────────────────────────────────────────────────────────────
xxxx:0000 │ DOS low-level BIOS code (read from IO.SYS on boot disk)
──────────┼─────────────────────────────────────────────────────────────────
xxxx:0000 │ DOS interrupt handlers, including INT 21H  (IBMDOS.COM)
          ├─────────────────────────────────────────────────────────────────
xxxx:0000 │ DOS buffers, data areas, and installed device drivers
──────────┼─────────────────────────────────────────────────────────────────
xxxx:0000 │ resident portion of COMMAND.COM
          │ includes handlers for INT 22H  INT 23H and INT 24H
──────────┼─────────────────────────────────────────────────────────────────
xxxx:0000 │ TSR-style programs and data
──────────┼─────────────────────────────────────────────────────────────────
xxxx:0000 | Currently-executing application program (.COM or .EXE program)
          | Programs initially own all of memory up to 640K (a000:0000) or
          | whatever is the memory-ceiling in the PC.
──────────┼─────────────────────────────────────────────────────────────────
xxxx:0000 │ Transient portion of COMMAND.COM.  Command processor, internal
          │ commands, etc.  Gets reloaded if any program overwrites this are
──────────┼─────────────────────────────────────────────────────────────────
xxxx:0000 │ Extended BIOS Data Area on PS/2 (highest memory below 640K)
──────────┼─────────────────────────────────────────────────────────────────
a000:0000 │ On 386+ CPUs, addresses from a000:0 to f000:0 that are not
 through  │ occupied by ROM are available as UMBs when supported by
e000:ffff │ EMM386.EXE or other memory-management software
──────────┼─────────────────────────────────────────────────────────────────
a000:0000 │ EGA and VGA memory for certain video modes
          ├─────────────────────────────────────────────────────────────────
b000:0000 │ MDA display adapter video memory (also Hercules & clones)
          ├─────────────────────────────────────────────────────────────────
b800:0000 │ CGA video memory (also Hercules page 2)
──────────┼─────────────────────────────────────────────────────────────────
c800:0000 │ External ROM code.  ROM-BIOS looks here (in 2K-block increments)
 through  │ for code to be executed at boot time.  Such ROMS usually install
e000:0000 │ a device handler (e.g., hard disk or EGA BIOS); see ROM-Scan
          ├─────────────────────────────────────────────────────────────────
  also    │ Physical paging addresses for EMS expanded memory.
──────────┼─────────────────────────────────────────────────────────────────
e000:0000 │ AT motherboard ROM modules in 64K-block increments.
 through  │ See ROM-Scan
e000:ffff │
──────────┼─────────────────────────────────────────────────────────────────
f600:0000 │ ROM-resident BASIC interpreter (ancient IBM-logoed PC only)
──────────┼─────────────────────────────────────────────────────────────────
fe00:0000 │ ROM-BIOS: POST, boot code, interrupt handlers, the whole banana
──────────┼─────────────────────────────────────────────────────────────────
f000:fff0 │ JMP instruction to first opcode to execute on power up or reset
          ├─────────────────────────────────────────────────────────────────
f000:fff5 │ BIOS release date (in ASCII)
          ├─────────────────────────────────────────────────────────────────
f000:fffe │ IBM PC identification code.  See BIOS Data Area (end of table)
          └─────────────────────────────────────────────────────────────────
          ┌─────────────────────────────────────────────────────────────────
ffff:0000 │ This is the High Memory Area, available to 286+ computers.
 through  │ It is the first 64K (less 16 bytes) of extended memory, but is
ffff:fff0 │ set up to be accessible while in real mode.
          └─────────────────────────────────────────────────────────────────
█▌Above 1M▐█
  Area above 1 MB is extended memory available to AT-class computers via
  BIOS function INT 15H and (when HIMEM.SYS or other XMS provider is
  installed) XMS Services.  The CPU is switched into protected mode to make
  this memory accessible.  See also: About DPMI.

  Extended memory is currently used by DOS only for RAM-disk, disk caching,
  and by a few DOS TSRs.

  Windows, OS/2, Xenix, and other operating systems or control programs may
  use this area for multitasking or general-purpose memory.

See Also: BIOS Data Area
          EGA/VGA Data Areas
          I/O Port Map
                                    -♦-