# Microsoft Macro Assembler

El Microsoft Macro Assembler (MASM) es un ensamblador para la familia x86 de microprocesadores. Fue producido originalmente por Microsoft para el trabajo de desarrollo en su sistema operativo MS-DOS, y fue durante cierto tiempo el ensamblador más popular disponible para ese sistema operativo. El MASM soportó una amplia variedad de facilidades para macros y programación estructurada, incluyendo construcciones de alto nivel para bucles, llamadas a procedimientos y alternación (por lo tanto, MASM es un ejemplo de un ensamblador de alto nivel). Versiones posteriores agregaron la capacidad de producir programas para los sistemas operativos Windows. MASM es una de las pocas herramientas de desarrollo de Microsoft para las cuales no había versiones separadas de 16 bits y 32 bits.

## La competencia

A principio de los años 1990, ensambladores alternativos comenzaron a tomar algo de la cuota de mercado del MASM, como el TASM de Borland, el ensamblador A86, comercializado como shareware, y hacia finales de los años 1990, el NASM. Sin embargo, dos acontecimientos a finales de los años 1990 permitieron que el MASM conservara mucha de su cuota de mercado: Primero, Microsoft dejó de vender el MASM como un producto comercial y comenzó a distribuirlo gratuitamente como parte del Driver Development Kit (DDK) (Kit de Desarrollo de Controladores). Segundo, aparecieron, el paquete MASM32, y los tutoriales sobre Win32 de Iczelion, haciendo posible la programación de aplicaciones de Windows con el MASM. Combinado con la enorme base instalada de usuarios de MASM, estos dos eventos ayudaron a prevenir la deserción del MASM a otros ensambladores. Hoy en día, MASM sigue siendo el ensamblador número uno en la plataforma Win32, a pesar de la competencia de productos nuevos tales como NASM, FASM, GoAsm, y HLA.

## Proyectos que soportan al MASM

Hay en curso muchos desarrollos de proyectos de software que soportan el MASM, incluyendo IDEs (como RadASM y WinAsm Studio), depuradores (como OllyDbg), y desensambladores (incluyendo IDAPro, el desensamblador interactivo). El proyecto MASM32 ha puesto juntos una muy impresionante librería de programador, un repositorio de ejemplos de código, y una extraordinaria documentación para los usuarios del MASM. MASM también es soportado por una gran cantidad de páginas web y foros de discusión, incluyendo http://www.masmforum.com. A pesar de la edad de este producto, sigue siendo uno de los ensambladores en existencia mejor soportados.

## Versiones

Aunque MASM ya no es un producto comercial, Microsoft continúa soportándolo debido a la gran base de código en lenguaje ensamblador que existe internamente en Microsoft. Desde que Microsoft dejó de vender el MASM por separado, la compañía ha lanzado varias actualizaciones a la línea de productos del MASM versión 6.xx, siendo la última la versión 6.15, que fue incluida en el Visual C++ 6.0 Processor Pack. Microsoft lanzó el MASM versión 7.0, que fue incluido con Visual C++ .NET 2002, el MASM versión 7.1 incluido con el Visual C++ .NET 2003, y el MASM 8.0 que vino con el Visual C++ 2005 y por lo tanto incluye una versión que puede ensamblar código x64. Para la versión del MASM incluida en las nuevas versiones de Visual C++, busque el archivo ml.exe en el directorio bin de Visual C++, y para la versión que puede ensamblar código x64 incluida en Visual C++ 2005, busque el archivo ml64.exe en el mencionado directorio. La documentación para las versiones incluidas con las recientes versiones de Visual C++ es parte de la documentación para esa versión.

## Soporte

Aunque existen rumores de que Microsoft ya no soporta al MASM, la realidad es que Microsoft continúa soportando este producto, aunque solo sea para sus propios propósitos. Generalmente, el soporte está limitado a agregar nuevas instrucciones a medida que aparecen nuevos procesadores y a mejorar el soporte para 64 bits. Más allá de esto, los cambios radicales en el ensamblador no se han visto.