- High Memory Area
The High Memory Area (HMA) is the RAM area consisting of the first 64 kibibytes (KiB), minus 16
bytes , of theextended memory on anIBM PC or compatible microcomputer.In
real mode , the segmentation architecture of theIntel 80286 and subsequent processors identifies memory locations with 16-bit segment and 16-bit offset, which is resolved into a physical address via . Although intended to address only 1 megabyte ( bytes) of memory, segment:offset addresses atFFFF:0010
and beyond reference memory beyond 1 megabyte (FFFF0 + 0010 = 100000
). So this syntax can actually address 17×64 KiB minus 16 bytes of memory from0000:0000
toFFFF:FFFF
. TheIntel 8086 andIntel 8088 processors, unable to handle more than 1mebibyte of memory, wrapped around at the 20th bit, so that addressFFFF:0010
was equivalent to0000:0000
.In order to allow running existing MS-DOS programs which relied on this feature on their newer
IBM PC AT computers, IBM added specialcircuitry on themotherboard to simulate the wrapping around. This circuit was a simplelogic gate which could disconnect the microprocessor's 20th addressing line, A20, from the rest of the motherboard. This gate could be controlled, initially through the keyboard controller, to allow running programs which wanted to access the entire RAM.So-called
A20 handler s could control the addressing mode dynamically, thereby allowing programs to load themselves into the 1024–1088 KiB region and run in real mode. The first user of the HMA among Microsoft products was Windows/286 2.1 in 1988, which introduced theHIMEM.SYS device driver. Starting with versions 5.0 ofDR-DOS (1990) and ofMS-DOS (1991), parts of the operating system could be loaded into HMA as well, freeing up to 46 KB ofconventional memory . Other components, such as device drivers and TSRs, could be loaded into theUpper Memory Area .See also
*
Unreal mode
*Conventional memory
*Upper Memory Area
*Extended memory
*Expanded memory
Wikimedia Foundation. 2010.