.com (MS-DOS)
# .com (MS-DOS)

.com est une extension de nom de fichier pour des fichiers exécutables en MS-DOS.

## Format de fichier

À l'époque des premiers processeurs de la série x86 d'Intel, dont l'espace d'adressage était découpé en «segments» de maximum 64KB, les fichiers «.com» étaient des programmes de suffisamment petite taille pour tenir entièrement sur un seul segment. ce qui leur permettait de ne nécessiter aucune relocation pour leur chargement en mémoire.

Alors que les fichiers «.exe» au contraire nécessitaient de contenir une table de relocation indiquant tous les endroits du programme contenant des valeurs nécessitant d'être recalculée en fonction de l'adresse mémoire à laquelle ils étaient chargés, les fichiers «.com» étaient simplement chargés à l'adresse 100h d'un segment quelconque, après 256 octets d'informations sur l'environnement, d'où la directive ORG 100h qui commence toujours un programme destiné à être compilé au format com. Une convention veut que les données soient placées au début du fichier, juste après une instruction de saut vers le code exécutable.

L'extrême simplicité de ce format posait problème pour réaliser des programmes nécessitant plus de 64KB de ram, ce qui explique son abandon progressif au profit du format .exe. Certains fichiers d'extension .com sont au format PE, le système les reconnaît à leurs deux premiers octets valant MZ.

## Exemples

Il existe encore des programmes ayant l'extension .com sous Windows, essentiellement des programmes destinés à être lancés en ligne de commande.

* COMMAND.COM était l'interpréteur en ligne de commande de MS-DOS (similaire à cmd.exe) ;
* diskcopy effectue une copie d'un disque amovible (initialement copie d'une disquette sur une autre disquette) ;
* tree.com affiche l'organisation des répertoires du disque sous la forme d'un arbre ;
* more.com permet d'afficher le contenu d'un fichier (généralement un fichier texte), en faisant défiler vers le bas ligne par ligne (en appuyant sur la touche « entrée ») ; il ne permet pas de remonter ;
