lunes, 16 de abril de 2018

programa con macros

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,"$"
    mensaje4  DB "Que letra quieres",13,10,"$" 
    caracter  DB ?   
    varx  DB ?     
    vary  DB ?
    vaa   db 0
    vtext db 100 dup('$')   ;Declaracion del vector

     
.code  ;segmento de codigo
   
    startup: ;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   ;fincion 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 cx,si   
        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        ;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 vary,al       ;ponemos el numero en vary   
        mov ax,0003h      ;funcion que limpia la pantalla 
        int 10h           ;interrupcion
        imprime mensaje4
        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
        gotoxy vary,varx  ;llamamos al macro gotoxy y le enviamos las variables vary y varx
        mov ah,00          ;limpiamos la parte alta de ax
        mov si,ax          ;ingresamos en si la posicion del caracter que deseamos imprimir
       
        ;kol:         
         pantalla caracter[si] ;llamamos al macro pantalla y le enviamos el caracter en la posicion deseada
         ;inc si 
        ;loop kol         
       
        mov ah,01h   ;funcion de captura con impresion en pantalla     
        int 21h      ;interrupcion   
        mov ax,4c00h ;funcion de fin     
        int 21h      ;interrupcion 
       
end startup          ;fin

No hay comentarios:

Publicar un comentario

Trabajo con puerto usb

Programación de puerto USB USB viene de frase en Ingles “Universal Serial Bus” que se utiliza para describir un tipo de puerto en la co...