Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: AFelipeTrujillo en 30 Agosto 2010, 01:12 am



Título: [Aporte de 4ng3r] MASM32 - RadAsm y Estructura Basica
Publicado por: AFelipeTrujillo en 30 Agosto 2010, 01:12 am
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/ (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:

(http://a.imageshack.us/img686/2077/screenhunter01aug280017.gif)

(http://a.imageshack.us/img683/2747/screenhunter02aug280019.gif)

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

(http://a.imageshack.us/img38/4636/screenhunter04aug280025.gif)

Estas opciones las dejamos tal cual y oprimimos Finish

Al lado derecho se pueden observar los archivos que hemos creado.

(http://a.imageshack.us/img85/4351/screenhunter06aug280027.gif)

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
  1. .386
  2. .model flat,stdcall
  3. option casemap:none
  4.  
  5. include windows.inc
  6. include kernel32.inc
  7. includelib kernel32.lib
  8.  
  9. .data
  10.  
  11. .code
  12. prueba1:
  13.  
  14. invoke ExitProcess,0
  15.  
  16. end prueba1
  17.  

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 (http://4ng3r.blogspot.com/2010/08/masm32-radasm-y-estructura-basica.html#more)