Rara tu pregunta... En fin, un fichero .exe consiste esencialmente de código objeto + una cabecera para el sistema operativo.
En detalle, cuando compilas un programa, se genera código objeto (.obj). Este código objeto contiene direcciones memoria (por ejemplo, "goto Escape;", es decir, "salte a la dirección de la etiqueta "Escape"), pero no son válidas, pues no se sabe en qué lugar de la memoria el sistema operativo cargará el programa. Cualdo enlazas (link) el código objeto para formar un ejecutable (.exe), el enlazador convierte esas direcciones de memoria en direcciones relativas, es decir, en desplazamientos con respecto a la dirección de inicio del programa cuando éste sea cargado; y le añade una cabecera que el sistema operativo necesita para (entre otras cosas) identificar el programa como un ejecutable y resolver las direcciones de memoria. Bueno, el enlazador hace bastantes cosas más, pero eso es lo básico.
Si abres un ejecutable con el Bloc de Notas, veras que comienza con MZ. Esa es la marca de un ejecutable para el DOS.
Un fichero .com no contiene la cabecera, es decir, consta de código máquina "puro" con referencias relativas a memoria. Como no contiene la cabecera, no puede exceder de 64k, porque sin la cabecera el sistema operativo no puede resolver direcciones que apunten fuera del segmento de código del programa.
Si necesitas más información, escríbeme.
¡Suerte!