Main Page | See live article | Alphabetical index

A20 handler

The A20 handler is IBM PC memory manager software providing HMA. XMMs usually provide this functionality. Named after the 21st address line (A20), controlling the access to HMA.

See also:

This article (or an earlier version of it) contains material from FOLDOC, used with permission.

In more depth: The 8088 CPU used in the original IBM PC was capable of addressing memory using 20 binary digits ("bits"). But the internal registers in the 8088 were only 16 bits wide. A 20 bit address was created by tacking four zero bits onto the end of a 16 bit Segment Address and adding the 16 bit address to it yielding a 20 bit result. In reality, the result can be 21 bits wide since the total of the two registers can be more than FFFFF hexadecimal. It is possible to generate references to slightly more than 65000 bytes that are outside the addressing range of the 8088. When the 80286 CPU which had more than 20 address lines was developed, it became necessary to deal with code that referenced the 64K addressable by ordinary addressing but not present in the 8088. As it turned out, it was sometimes desirable to set the 21st address line, and sometimes desirable not to. A control flag in was added to the CPU indicating how to handle the 21st Address line.

Since address lines count from 0, not one, the 21 line is A20. Control of the line is performed by a program called an A20 Handler. Controlling the A20 line was an important feature at one stage in the growth of the IBM PC architecture as it added access to an additional 65520 bytes of memory without dramatic software changes. The added area is known as High Memory.