MASM32 - RadAsm y Estructura Basica
Introduccion
Masm32 es un excelente conjunto de herramientas de programación, distribuído por Hutch, que incluye el Macro Assembler de Microsoft, macros, ayudas y todas las librerías (.lib) y archivos 'include' (.inc) necesarios para programar aplicaciones en assembler para Windows.
Pagina Principal: http://www.masm32.com/
RadASM
Para que se nos haga mas fácil la vida, esta a nuestra dispositivo un IDE para Assembler llamado RadASM, una vez lo hayamos descargado e instalado, procedemos a crear nuestro primer proyecto:
En la opción de ensamblador escogemos masm y en tipo de proyecto marcamos Win32 App, le asignamos un nombre al proyecto yo escoji prueba1, la ruta donde va ser almacenada y Next
Luego escogemos los archivos a crear con el proyecto, en este caso activaremos la casilla de Asm, Inc y Bak
Estas opciones las dejamos tal cual y oprimimos Finish
Al lado derecho se pueden observar los archivos que hemos creado.
Abrimos el archivo Asm y nos ponemos programar
Estructura Basica
Un Programa para Masm32 debe seguir una estructura que pueda ser entendida por nuestro compilador, por ejemplo:
Código
.386 .model flat,stdcall option casemap:none include windows.inc include kernel32.inc includelib kernel32.lib .data .code prueba1: invoke ExitProcess,0 end prueba1
Explicacion:
.386 - Esta directiva sirve para establecer el tipo de procesador y sus instrucciones con lo que se va a trabajar
.model flat,stdcall - Aquí establecemos el modelo de memoria requerido para nuestro programa
option casemap:none - Esta opcion hace sensible las mayucualas de las minusculas, es decir, que B es difetente A
include y includelib - Como todo en Windows, Masm32 incluye archivos y librerías para manejar un gran numero de funciones que existen en este sistema operativo, es decir para usar el API. Por ejemplo en la estructura anterior use el ExitProcess. Include lo usamos para agregar o importar archivos *.asm o *.inc en cambio Includelib lo usamos para agregar librerías *.lib.
.data - Es el segmento en donde estableceremos los datos a utilizar en el programa, existen dos tipo de información la inicializada y la no inicializada (.data?)
.code - Es el segmento en donde le indicamos a Mam32 donde empieza el código y donde termina
FUENTE