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");resultado de la MACRO (la direccion de memoria de esta cadena) mov ecx, CTEXT("Titulo del mensaje");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
Ir a la versión completa