The technique probably first appeared with the development of CEMM, included with Compaq DOS 3.31 in 1987. Microsoft's version first appeared, built-in, with Windows/386 2.1 in 1988 and as standalone EMM386.SYS with MS-DOS 4.01 in 1989; the more flexible EMM386.EXE version appeared in MS-DOS 5.0 in 1991. EMM386.EXE is also included as part of the FreeDOS utilities
Just as the other expanded memory managers, EMM386 uses the processor's virtual 8086 mode. It temporarily shuts down during a Windows session in 386 Enhanced mode, with Windows' protected mode kernel taking over its role.
EMM386.EXE can map memory into unused blocks in the upper memory area (UMA), allowing device drivers and TSR to be "loaded high", preserving conventional memory.