Press

Header Ads

MI PRIMERA MACRO ASSEMBLER 8086

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 

Publicar un comentario

0 Comentarios