Por un pequeño error de diseño, el microprocesadorIntel 80286 y los procesadores subsecuentes pueden de hecho direccionar en modo real 17×64 KiB menos 16 bytes de memoria [desde 0000:0000 hasta FFFF:FFFF (equivalente a la dirección de memoria FFFF0 + FFFF = 10FFEF), escrito en notación de segmento de memoria del PC con números hexadecimales], o lo que es lo mismo que 1 MiB + 64 KiB - 16 bytes. En los procesadores Intel8086 y 8088, incapaces manejar más de 1 mebibyte de memoria, el direccionamiento "daba una vuelta circular", es decir, la dirección FFFF:0010 era equivalente a la dirección 0000:0000.
Para permitir correr en los nuevos computadores IBM AT los programas de MS-DOS existentes que dependían de esta característica, IBM agregó un circuito especial en la tarjeta madre para simular la vuelta circular del direccionamiento de los procesadores anteriores. Este circuito era una puerta lógica AND que podía desconectar la línea de dirección A20 del microprocesador del resto de la tarjeta madre. Esta puerta podía ser controlada inicialmente a través del controlador del teclado, para permitir correr programas que desearan tener acceso al RAM entero.
Los llamados A20 handlers podían controlar el modo de direccionamiento dinámicamente, permitiendo de esta manera que los programas corriendo en modo real se cargaran a sí mismos en la región de los 1024-1088 KiB. Entre los productos de Microsoft, el primero en usar el HMA fue el Windows/286 2.1 de 1988, que introdujo el driver de dispositivo HIMEM.SYS. Comenzando con las versiones 5.0 del DR-DOS (1990) y el MS-DOS (1991), partes del sistema operativo también se podían cargar en HMA, liberando hasta 46 KiB de memoria convencional. Otros componentes, como controladores de dispositivos o drivers y los TSR, se podían cargar en el área de memoria superior.