Section courante

A propos

Section administrative du site

Introduction

L'extension de fichiers «.EXE» et un format de fichier exécutable ayant fait sous apparition à partir du PC DOS 2.0/MS DOS 2.0.

Spécification

Spécification Description
Type Exécutable
Auteur Mark Zbikowski

Format du fichiers

Qu'est-ce que c'est l'entête MZ?

Il s'agit d'une entête originaire du système d'exploitation PC DOS 2.0/MS-DOS 2.0 et étant à la base de tous les formats d'exécutable PC grand public (DOS, OS/2, Windows, eComStation, ReactOS). Il s'agit de tous premiers octets d'un fichier de format «.EXE», il n'existe aucun autre format de données avant lui en principe, mais certains programmes tiers DOS, comme les recouvrements (Overlay) de Central-Point semblent les utilisés ailleurs.

Structure d'entête

Voici la significations des différentes informations contenu dans le tableau :

Entête MZ (Mark Zbikowski):

Déplacement (Hexadécimal) Taille Description
00h à 01h 1 mot (2 octets) Ce champ indique la signature d'un programme EXE (5A4Dh et 'MZ' (Mark Zbikowski))
02h à 03h 1 mot (2 octets) Ce champ indique la longueur du programme de format EXE en modulo 512 (MOD 512)
04h à 05h 1 mot (2 octets) Ce champ indique la longueur du programme EXE en division 512 (DIV 512)
06h à 07h 1 mot (2 octets) Ce champ indique le nombre d'adresses de segment à adapter
08h à 09h 1 mot (2 octets) Ce champ indique la taille de l'entête en paragraphe
0Ah à 0Bh 1 mot (2 octets) Ce champ indique le nombre minimal de paragraphes nécessaire en supplément
0Ch à 0Dh 1 mot (2 octets) Ce champ indique le nombre maximal de paragraphes nécessaire en supplément
0Eh à 0Fh 1 mot (2 octets) Ce champ indique le déplacement de chargement du module dans la pile
10h à 11h 1 mot (2 octets) Ce champ indique le contenu du registre SP au lancement du programme
12h à 13h 1 mot (2 octets) Ce champ indique la somme de vérification de l'en-tête du fichier exécutable
14h à 15h 1 mot (2 octets) Ce champ indique le point d'entrée du programme (contenu du registre IP au lancement du programme.
16h à 17h 1 mot (2 octets) Ce champ indique le déplacement de chargement de module (Début du segment de code dans le programme EXE).
18h à 19h 1 mot (2 octets) Ce champ indique l'adresse de la table de relogement du programme EXE.
1Ah à 1Bh 1 mot (2 octets) Ce champ indique le numéro de recouvrement (overlay) (0 pour le programme principal).
1Ch à ... Variable Ce champ contient une mémoire-tampon de taille variable.
... Variable Ce champ contient une adresses des adresses de segment à adapter (table de relogement).
... Variable Ce champ contient le code du programme, segments de données et de pile.
Nouveau exécutable
1Ch à 1Fh 2 mots (4 octets) Ce champ est d'une valeur inconnue.
20h à 21h 1 mot (2 octets) Ce champ permet d'indiquer les bits de comportement.
22h à 3Bh 26 octets Ce champ est réservé pour des informations additionnel de comportement.
3Ch à 3Fh 2 mots (4 octets) Ce champ permet d'indiquer le déplacement du nouvelle entête d'exécutable (NE, LE,...) à l'intérieur du fichier disque ou 0000h:0000h si pleinement exécutable de format MZ.

Code source

Voici des exemples de code source d'utilitaires pour manipuler les .EXE :

Lien Langage de programmation Description Projet Syntaxe
COM2EXE.PAS Free Pascal, Turbo Pascal Cette commande permet de convertir un fichier «.COM» en fichier «.EXE» DEV-COOLS COM2EXE
EXE2BIN.PAS Free Pascal, Turbo Pascal Cette commande permet de convertir un fichier EXE en binaire (COM). Corail EXE2BIN
EXEHEAD.PAS Free Pascal, Turbo Pascal Cette commande permet d'afficher le contenu de l'entête d'un exécutable. Corail EXEHEAD
EXEPACK.PAS Free Pascal, Turbo Pascal Ce programme permet de réduire la taille de l'entête EXE d'un programme 16 bits. Corail EXEPACK
FROMEXE.PAS Free Pascal, Turbo Pascal Cette commande permet d'analyser un EXE. Corail FROMEXE

Voir également

Index des extensions de fichier - Fichier EXE - Format NE

Dernière mise à jour : Mardi, le 24 juin 2014