High memory area
<storage> (HMA) The first 64 kilobytes (minus 16 byte) of the
extended memory on an
IBM PC.
By a strange design glitch the
Intel 80x86 processors can actually address 17*64 kbyte minus 16 byte of memory (from 0000:0000 to ffff:ffff) in real mode.
In the
Intel 8086 and
Intel 8088 processors, unable to handle more than 1
megabyte of memory, addressing wrapped around, that is, address ffff:0010 was equivalent to 0000:0000.
For compatibility reasons, later processors still wrapped around by default, but this feature could be switched off.
Special programs called A20 handlers can control the addressing mode dynamically, thereby allowing programs to load themselves into the 1024--1088 kbyte region and run in
real mode.
From version 5.0 parts of
MS-DOS can be loaded into HMA as well freeing up to 46 kbytes of
conventional memory.