programa con macro

gotoxy macro fila,col ;macro con parametros fila - columna
    mov ah,02h       ;cursor en pantalla
    mov dh,fila      ;x
    mov dl,col       ;y
    mov bh,0h        ;posicion en coordenadas pedidas
    int 10h
endm
pantalla macro que     ;macro pantalla
    mov ah,02h         ;posiciona cursor
    mov dl,que         ;almacena el valor del caracter
    int 21h
endm
imprime macro eztryng       ;macro para imprimir las lineas
    mov dx,offset eztryng   ;coloca el mensaje
    mov ah,9                ;funcion para imprimir el mensaje
    int 21h                 ;int en pantalla
endm
DATOS SEGMENT PARA PUBLIC
    mensaje DB "INGRESE UN CARACTER: ",13,10,"$"     ;lineas de codigo para los mensajes
    mensaje2 DB "INGRESE X del 0 al 9: ",13,10,"$"
    mensaje3 DB "INGRESE Y del 0 al 9: ",13,10,"$"
    caracter DB 40                                     ;variable para el caracter a mostrar
    varx DB ?                                          ;variable de coordenada x
    vary DB ?                                          ;variable de coordenada y
    vtext db 100 dup('$')
DATOS ENDS
CODIGO SEGMENT PARA PUBLIC 'code'
ASSUME CS:CODIGO,DS:DATOS
startup:
    mov ax,DATOS                                       ;referencia al segmento codigo
    mov ds,ax
imprime mensaje  ;macro imprime la variable mensaje                                       ;registro SI en 0
    mov si,00h   ;se limpia el registro
    leer:
        mov ax,0000 ;limpia ax
        mov ah,01h  ;funcion que ingresa el caracter y lo imprime
        int 21h
        mov caracter[si],al  ;caracter dentro del arreglo
        inc si               ;incremento
        cmp al,0dh           ;comparamos AL con el salto de linea
        ja leer              ;repite la funcion leer en caso de no ser igual
        jb leer              ;al dar salto de linea sigue el programa
        mov dx,offset caracter ;funcion imprimir el caracter
        mov ah,0ah           ;imprimir salto de linea
        int 21h
imprime caracter             ;llamamos al macro imprime y le enviamos la variable caracter
imprime mensaje2             ;se llama al macro y se le manda el msj2
        mov ah,01h
        int 21h
        sub al,30h           ;se le resta 30h para convertir en numero
        mov bl,al            ;se pasa a BL
        mov varx,al          ;se guarda en varx
imprime mensaje3
        mov ah,01h
        int 21h
        sub al,30h
        mov bl,al
        mov vary,al
        mov ax,0003h          ;limpia pantalla
        int 10h
gotoxy vary,varx             
    pantalla caracter[0]     ;llama al macro y manda el caracter a la posicion
        mov ah,01h           ;funcion para ingresar un caracter e imprimir en pantalla.
        int 21h
        mov ax,4c00h         ;funcion para terminar el programa.
        int 21h
        
CODIGO ENDS
end startup

Comentarios

Entradas populares de este blog

Ejercicios con funciones emu8086

Uso de INT 21h en ej. Limpiar Pantalla.

Sintaxis del lenguaje ensamblador