[Aporte de 4ng3r] MASM32 - RadAsm y Estructura Basica

Iniciado por AFelipeTrujillo, 30 Agosto 2010, 01:12 AM

0 Miembros y 1 Visitante están viendo este tema.

AFelipeTrujillo

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 (asm) [Seleccionar]
.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