The XMS-standard

last update: 06/2003

If you are in MS-DOS (real mode) you can access not more than 640kbyte. In the best case. To give you more than this, several tricks were made, but everything was and will be via protected mode.

Thats were XMS-standard comes. Normally realized by HIMEM.SYS. HIMEM supports:

the Extended Memory Blocks (EMB), the extended memory behind 1MB
The major part of RAM is behind the 1MB border: the real extended memory. To use this, HIMEM switches to protected mode, copies the block down into usual memory below 640KB and gets back to real mode.
the so called High Memory Area (HMA): 64 KB from 1024KB to 1088KB
If you power on your PC, the datatransfer from RAM to processor works with 20 adresslanes. The XT has had not more than A0 to A19, but from the 286 on there are more lanes. The highest 20-bit-number is FFFFFh but in real mode it is possible to adress more just by segment:offset until FFFFh:FFFFh (=10FFEFh). This is 63KB more than 1MB. But you need A20 for this and A20 is disabled for some programs wich need the overflow on FFFFFh. You have to enable A20 to use HMA.
the Upper Memory Blocks (UMB), blocks between 640 and 1024kbyte.
The UMBs are parts betweem 640 and 1024Kbyte, which are made available by HIMEM.SYS.