EXE

EXE is a family of executable file formats. It includes the original MS-DOS EXE format, and a number of newer formats built on top of that format. Most of them use the same .exe file extension.

Although all members of the EXE family have a file signature of "MZ", it seems that the term "MZ format" is generally used to mean only MS-DOS EXE (i.e. files designed for MS-DOS).

EXE files designed for operating systems other than MS-DOS usually contain a short program (called a DOS stub) which, when executed by DOS, prints a message like "This program cannot be run in DOS mode" or "This program requires Microsoft Windows", and immediately exits. Some programs contain a more functional DOS stub, e.g. the Windows 9x registry editor.

Formats
This is an incomplete outline of the EXE family of formats.
 * EXE
 * MS-DOS EXE
 * NE (New Executable, 16-bit)
 * Linear Executable
 * LE (mixed 16/32-bit)
 * LX (32-bit)
 * PE (Portable Executable)
 * PE32 (32-bit Windows)
 * PE32+ (64-bit Windows)

Identification
All EXE formats start with ASCII signature "" or, rarely, "". The byte at offset 3 is  or   (as it is the high byte of a field whose valid values are 0 through 511).

The starting point for identifying extended formats is the field at offset 60, which if present, points to an extended header.

Links

 * Ralf Brown's Interrupt List, INT 21h, Function 4Bh, describes lots of the "older" style EXE formats
 * EXE Explorer utility

See also the articles for the specific EXE formats.