High Memory AreaHigh Memory Area (HMA)
are 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
This article was originally based on material from the Free On-line Dictionary of Computing, used with permission. Update as needed.