martes, 17 de abril de 2018

Macro 2

org 100h
.model small

gotoxy macro fila,col   ;Macro que  pone el cursor en la posicion deseada 
    mov ah,02h          ;Funcion imprimir caracter   
    mov dh,fila         ;Ingresamos la coordenada de x   
    mov dl,col          ;Ingresamos la coordenada de y   
    mov bh,0h           ;Numero de pagina       
    int 10h             ;Interrupcion
endm                    ;Fin del macro

pantalla macro que      ;Macro que imprime el primer caracter de la palabra escrita       
    mov ah,02h          ;Funcion  imprimir caracter
    mov dl,offset que   ;Ponemos el mensaje en dl   
    int 21h             ;Interrupcion
endm                    ;Fin del macro

imprime macro eztryng      ;Macro que imprime los mensajes que le enviemos 
    mov dx,offset eztryng  ;Ponemos elmensaje en dx
    mov ah,9               ;Funcion imprimir variable
    int 21h                ;Interrupcion
    endm                   ;Fin del macro

.data    ;Segmento de datos con  variables
    mensaje  DB "INGRESE UN CARACTER: ",13,10,"$"
    mensaje2  DB "INGRESE X del 0 al 9: ",13,10,"$"
    mensaje3  DB "INGRESE Y del 0 al 9: ",13,10,"$"
    caracter  DB ?   
    varx  DB ?   
    vary  DB ?
    vaa   db 0
    vtext db 100 dup('$')   ;Declaracion del vector

     
.code  ;Segmento de codigo
 
    inicio:          ;Funcion de inicio
    mov ax,@data     ;Almacenamos lo que esta en el segento data 
    mov ds,ax        ;Movemos ax a ds
    imprime mensaje  ;Llamamos al macro imprime y le enviamos la variable mensaje 
    mov si,00h       ;Limpiamos el registro si
    mov caracter,0   ;Limpiamos la variable caracter       
    leer:            ;Inicio de la funcion leer

        mov ax,0000         ;Limpiamos ax           
        mov ah,01h          ;Funcion de ingreso de caracter con impresion del mismo en pantalla         
        int 21h             ;Interrupcion 
        mov caracter[si],al ;Ponemos el caracter tecleado en el arreglo caracter     
        inc si              ;Incrementamos si   
        cmp al,0dh          ;Comparamos al=salto de linea       
        ja leer             ;De no ser igual repite la funcion leer para ingresar otro caracter 
        jb leer             ;En caso de que al=salto de linea continua el programa
     
        mov ah,02h          ;Funcion imprimir caracter     
        mov dl,10           ;Imprimimos un salto de linea
        int 21h             ;Interrupcion
        imprime caracter    ;Llamamos al macro imprime y le enviamos la variable caracter
        mov ah,02h          ;Funcion imprime caracter 
        mov dl,10           ;Imprimimos un salto de linea
        int 21h             ;Interrupcion
        imprime mensaje2    ;Llamamos al macro imprime y le enviamos la variable mensaje2
        mov ax,0000         ;Limpiamos ax
        mov ah,01h          ;Fincion de ingreso de caracter con impresion del mismo en pantalla
        int 21h             ;Interrupcion
        sub al,30h          ;Le restamos 30h al caracter ingresado para transformarlo en un numero
        mov bl,al           ;Ponemos el numero en bl
        mov varx,al         ;Ponemos el numero en varx
        imprime mensaje3    ;Llamamos al macro imprime y le enviamos la variable mensaje3
        mov ah,01h          ;Funcion de ingreso de caracter con impresion del mismo en pantalla
        int 21h             ;Interrupcion
        sub al,30h          ;Le restamos 30h al caracter ingresado para transformarlo en un numero
        mov bl,al           ;Ponemos el numero en bl
        mov vary,al         ;Ponemos el numero en vary   
        mov ax,0003h        ;Funcion que limpia la pantalla 
        int 10h             ;Interrupcion de sistema
   
        mov ah,01h   ;Funcion de captura con impresion en pantalla     
        int 21h      ;Interrupcion 
        mov ax,4c00h ;Funcion de fin     
        int 21h      ;Interrupcion 
       
end inicio         ;Fin de la function inicio

No hay comentarios.:

Publicar un comentario