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

Uso de INT 21h en ej. Limpiar Pantalla.

programa turbo assembler