Cómo crear una macro ensamblador x86
A medida que vas descubriendo este lenguaje, te das cuentas que hay tareas que son repetitivas, y ocupan mucho espacio de código, y conocer cómo crear una macro te haría la vida más sencilla, a continuación, te mostraré cómo es su estructura de una macro.
(nombre de la macro) + macro + (valor1, valor2, valor3)...endm
Ejemplo:
cursor macro f,c,texto ;macro de mover el texto
mov ah,02h ;poniendo 02h en ah podemos habilitar para mover el texto
mov dh,f ;valor de fila
mov dl,c ;valor de columna
int 10h ;ejecutando la interrupción int 10h, el cursor se ubica en el punto(x,y) señalado
mov dx,offset texto ;imprime texto
mov ah,09h
int 21h
endm
La manera para llamar la macro es de la siguiente manera:
cursor 5,5,msj1 ; valores fila y columna más el texto a mostrar
Al llamar la macro de esa manera, lo que se espera que haga, es que los valores "5,5", reemplacen a las variables "f,c", y la cadena de caracteres "msj1"reemplace a la variable "texto", seguidamente de comandos para imprimir la cadena de caracteres, luego de ejecutarse, retornará y pasará a la siguiente línea.
Ejemplo:
Dosbox: tasm y tlink |
Dosbox: ejecución del código |
.model small
.stack
cursor macro f,c,texto ;macro de mover el texto
mov ah,02h ;poniendo 02h en ah podemos habilitar para mover el texto
mov dh,f ;valor de fila
mov dl,c ;valor de columna
int 10h ;ejecutando la interrupción int 10h, el cursor se ubica en el punto(x,y) señalado
mov dx,offset texto ;imprime texto
mov ah,09h
int 21h
endm
.data
msj1 db "MI PRIMERA MACRO ENSAMBLADOR 8086","$"
msj2 db "MENÚ","$"
.code
inicio:
mov ax,@data
mov ds,ax
cursor 5,5,msj1 ; valores fila y columna más el texto a mostrar
cursor 6,5,msj2
mov ax,4c00h
int 21h
end
0 Comentarios
Dejame tus dudas o saludame!