Programación General > ASM (Ensamblador)

 Hola A Todos, Necesito Ayuda Sobre Esto

(1/1)

Victorn:
hola a todos...

toy recien metiendome en el mundo assembler. Necesito que alguien me pueda ayudar, explicandome basicamente que es una macros, sus funciones y si pueden poner ejemplos basicos para enteder mas... ojala alguien me puede ayudar gracias de antemano.

Eternal Idol:

--- Cita de: "Victorn" ---hola a todos...

toy recien metiendome en el mundo assembler. Necesito que alguien me pueda ayudar, explicandome basicamente que es una macros, sus funciones y si pueden poner ejemplos basicos para enteder mas... ojala alguien me puede ayudar gracias de antemano.
--- Fin de la cita ---
Las macros son construcciones de texto que son reemplazadas por el preprocesador dentro del codigo y no por en ensamblador en si. Estan disponibles en muchos lenguajes como por ejemplo en C (#define) y en assembly especificamente su sintaxis depende del ensamblador (MASM, NASM, FASM, etc) ya que no son parte del lenguaje ensamblador en si. Se suelen utilizar para funciones y tambien para reemplazar valores enteros constantes en el codigo.

Aca tenes un ejemplo para MASM de 32 bits:

--- Código: Text --- CTEXT MACRO text:VARARG  LOCAL TxtName  .const    TxtName BYTE text, 0  .code    EXITM <OFFSET TxtName>ENDM  
Con esta macro podes trabajar con cadenas como si estuvieras en C (practicamente) ya que lo que hace es declarar la cadena en la seccion de const y devolverla como resultado de la MACRO. Un ejemplo completo para MASM de 32 bits seria:


--- Código: Text --- .386.model flat, stdcall MessageBoxA PROTO STDCALL :DWORD, :DWORD, :DWORD, :DWORD CTEXT MACRO text:VARARG  LOCAL TxtName  .const    TxtName BYTE text, 0  .code    EXITM <OFFSET TxtName>ENDM .code  Main:    mov eax, CTEXT("Texto del mensaje")&#59;resultado de la MACRO (la direccion de memoria de esta cadena)    mov ecx, CTEXT("Titulo del mensaje")&#59;resultado de la MACRO (la direccion de memoria de esta cadena)    invoke MessageBoxA, 0, eax, ecx, 0  retend Main  
Mas info aca:
http://en.wikipedia.org/wiki/Macro

Sr. ASM:
Hablando en MASM
tambien puedes poner tu macro en un archivo adicional, cosa que en el archivo principal, unicamente los puedes usar, previamente incluido el archivo de la macro.
Ejemplo de macros para visualizar cadena de caracteres en pantalla:

VisPantalla MACRO variable
lea dx, variable
mov ah, 09h
int 21h
ENDM

En el programa principal, para visualizar un mensaje, escribirias:

VisPantalla Mensaje1 (Mensaje1 debes definirlo en el segmento de datos)

Saludos

Navegación

[0] Índice de Mensajes

Ir a la versión completa