martes, 17 de abril de 2018

Ejemplo de macro: suma

sumas macro p, s     ;macro de la suma
    mov al, p         ;se mueve el primer numero a al
    add al, s         ;a al se le suma el segundo numero (s)
    add al, 30h        ;a al se le suma 30h para obtener de nuevo el numero en decimal
    mov suma, al      ;se mueve al a suma
    mov ah, 09        ;salida de cadena de caracteres
    lea dx, msj3      ;se imprime el mensaje 3
    int 21h           ;interrupcion de sistema
    mov ah, 02        ;peticion para colocar el cursor
    mov dl, suma      ;se mueve suma a dl
    int 21h           ;interrupcion de sistema
    mov ah, 4ch       ;termina programa
    int 21h           ;interrupcion de sistema
endm
   

.model small
.stack 64
.data       ;segmento datos

    n1 db 0
    n2 db 0
    suma db 0
    msj  db "Dame el primer valor: $"
    msj2 db 10,13, "Dame el segundo valor: $"
    msj3 db 10,13, "suma = $"
   
.code  ;segmento codigo

mov ax, @data    ;se mueve data a ax
mov ds, ax       ;se mueve ax a ds
mov ah, 09       ;salida de una cadena de caracteres
lea dx, msj      ;se imprime el primer mensaje
int 21h          ;interrupcion de sistema

mov ah, 01       ;peticion de leer caracter
int 21h          ;interrupcion de sistema
sub al, 30h      ;se resta 30h para obtener el numero
mov n1, al       ;se mueve al a n1

mov ah, 09       ;salida de una cadena de caracteres
lea dx, msj2     ;se imprime el segundo mensaje
int 21h          ;interrupcion de sistema
mov ah, 01       ;peticion de leer caracter
int 21h          ;interrupcion de sistema
sub al, 30h      ;se resta 30h para obtener el numero
mov n2, al       ;se mueve al a n2

sumas n1, n2     ;se llama al macro y se le envian los parametros
   
ret

No hay comentarios:

Publicar un comentario