lunes, 16 de abril de 2018

Programa documentado de macros






gotoxy macro fila,col   ;macro para posicinar el caracter
    mov ah,02h     ;posicionar el cursor en pantalla       
    mov dh,fila    ;se manda la fila a la parte alta de dx    
    mov dl,col     ;columna a la parte baja de dx
    mov bh,0h      ;posiciona en las coordenadas dadas     
    int 10h        ;interrupcion
endm          

pantalla macro car  ;recibe el dato a mostrar, que es el parametro      
    mov ah,02h      ;posiciona con las coordenadas anteriores       
    mov dl,car      ;enviar el caracter y mostrar  
    int 21h         ;interrupcion 
endm           

imprime macro msj    ;macro para mostrar los mensajes   
    mov dx,offset msj  ;ponemos el mensaje en dx y lo muestra
    mov ah,9            ;funcion para imprimir mensaje
    int 21h             ;interrupcion
endm 

.model small
.data ;segmento datos 
    mensaje  DB "INGRESE UN CARACTER: $"
    mensaje2  DB 13,10,"INGRESE X del 0 al 9: $" 
    mensaje3  DB 13,10,"INGRESE Y del 0 al 9: $"  
    caracter  DB 40   ;variable para cadena  
    varx  DB ?      ;variables para coordenadas
    vary  DB ? 

    vtext db 100 dup('$') ;declaración del vector

         
.code ;segmento codigo
    inicio:  
        mov ax,@data    ;mueve segmento datos a ax    
        mov ds,ax       ;se mueve ax a ds
    
        imprime mensaje ;llamamos a imprime y le enviamos la variable    
    
        mov si,00h  ;limpiamos registro si          
    
    leer:  

        mov ax,0000   ;se limpia ax            
        mov ah,01h    ;funcion de ingreso de caracter, e imprimir          
        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              ;si no es igual, se repite  
        jb leer              ;si es igual, continua el programa
        ;acaba capturar caracter
            
        ;mostrar caracter capturado
        mov dx,offset caracter   ;imprime el caracter
        mov ah,0ah              ;lee cadenas de texto por teclado  
        int 21h                 ;interrupcion
    
        imprime caracter ;llama al macro imprime el caracter     
        
        imprime mensaje2 ;capturar coordenada 1  
    
        mov ah,01h   ;captura lo que se teclee  
        int 21h       ;interrupcion      
    
        sub al,30h   ;se le resta 30h para que se reconozca como numero
        mov bl,al      ;se mueve a bl 
    
        mov varx,al     ;se mueve el valor a varx   
        ;termina capturar coordenada 1
        
        
        imprime mensaje3    ;se llama al macro imprime y se le manda la variable
    
        mov ah,01h   ;captura lo que se teclee  
        int 21h      ;interrupcion       
    
        sub al,30h  
        mov bl,al  
        mov vary,al    ;termina capturar coordenada 2      
    
        
        mov ax,0003h   ;limpia pantalla       
        int 10h         ;interrupcion
        
        ;se llama a los macros y se les envian los datos        
        gotoxy vary,varx          
        pantalla caracter[0]           
    
        mov ah,01h       ;captura e impresion   
        int 21h          ;interrupcion
        mov ax,4c00h     ;funcion de fin  
        int 21h          ;interrupcion

CODIGO ENDS  
    end inicio

No hay comentarios:

Publicar un comentario