# Microsoft Macro Assembler

Le logiciel Microsoft Macro Assembler (Macro Assembleur de Microsoft, plus connu sous l'acronyme MASM) est un assembleur pour la famille de processeurs x86. Il fut à l'origine développé par Microsoft pour le développement de leur système d'exploitation MS-DOS.
MASM supporte une grande variété de macros aidant à la programmation en langage assembleur ainsi que des idiomes de programmation structurée, incluant des constructions de haut niveau pour les boucles, les appels de procédures, les branchements, etc. ce qui fait de MASM un assembleur à programmation de haut niveau. Les dernières versions de MASM ont la possibilité de produire des programmes pour le système d'exploitation Windows. MASM fut un des rares outils de développement de Microsoft pour lequel il n'y eut pas de versions 16 et 32 bits séparés.

## Compétition entre assembleurs

Dans les premières années de la décennie 1990 d'autres assembleurs alternatifs prirent une certaine part de marché à MASM, parmi lesquels TASM de Borland, le partagiciel A86 et NASM vers la fin de la décennie. Toutefois, deux évènements à la fin des années 1990 permirent à MASM de garder un solide support de la communauté des programmeurs en assembleur : en premier lieu, MASM, qui était jusqu'alors un logiciel commercial, fut distribué gratuitement comme partie du Driver Development Kit ou DDK. Dans un deuxième temps, le pack MASM32 maintenu par Steve Hutchesson ainsi que les tutoriels d'Iczelion apparurent permettant de programmer directement et relativement aisément des applications 32 bits fonctionnant sous Windows. Ces deux événements combinés assurèrent à MASM sa continuité dans le temps.
MASM reste encore aujourd'hui un assembleur phare de la communauté des programmeurs en assembleur pour la plateforme Win32, mais d'autres assembleurs comme GAS, NASM, TASM, FASM, GoAsm, RosAsm ou HLA rassemblent chacun une communauté importante.

## Versions de MASM

Bien que MASM ne soit plus un produit commercial, Microsoft continue à assurer son support du fait d'une utilisation assez importante du langage assembleur en développement interne chez Microsoft. Depuis que Microsoft a arrêté la vente de MASM, de nombreuses mises à jour ont été produites pour la lignée de MASM 6.x (la dernière mise à jour de cette lignée est la version 6.15 qui était incluse dans le Visual C++ 6.0 Processor Pack). MASM 7.0 fut inclus avec Visual C++ .NET 2002, MASM 7.1 avec Visual C++.NET 2003 et MASM 8.0 avec Visual C++.NET 2005 (cette dernière version est la première à pouvoir assembler du code 64 bits).
Pour les versions de MASM incluses avec Visual C++, l'exécutable de MASM s'appelle ml.exe et se situe dans le répertoire bin. La version 64 bits de MASM incluse avec Visual C++ 2005 se nomme ml64.exe et se situe dans le même répertoire. La documentation de MASM pour ces versions est incluse avec la documentation de Visual C++.

## Projets reconnaissant MASM

De nombreux projets reconnaissant MASM ont vu le jour. Ainsi, des environnements de développement intégrés permettent un développement plus aisé avec MASM (qui s'utilise habituellement en ligne de commande) parmi lesquels Qedit, Radasm ou WinAsm Studio. On notera aussi des débogueurs comme OllyDbg qui reconnaît la syntaxe MASM, ou des désassembleurs comme IDA.
De nombreux forums ou sites internet proposent des codes sources, de la documentation ou de l'aide concernant cet assembleur, qui reste un assembleur de référence.
La prise en charge officielle de MASM par Microsoft se résume aujourd'hui à ajouter des instructions lorsque de nouveaux processeurs voient le jour et à améliorer la prise en charge du 64 bits.