miércoles, 13 de febrero de 2019

Calificacion, compara si esta o no reprobado en emu8086

En esta entrada les traigo un programa visto en clase en donde ingresando una calificacion al sistema, nos mostrara un mensaje si la calificacion es aprobatoria o no.
Anteriormente habiamos visto como podiamos realizar sumas o restas con numeros de un solo digito, pues en esta ocasion la calificacion es de dos digitos, por lo que en la sintaxis se ira explicando como es que esto funciona.

Sintaxis 
.model small
.stack 64

.data ;seccion de variables  
   msg1 db "Dame una calificacion (Seguida de un enter):.$"
   aprobado db 13,10,"Aprobado.$"
   reprobado db 13,10,"Reprobado.$"
   VAR1 dw ?,"$"
   VAR2 dw ?,"$"
   VAR3 dw ?,"$"
   
   
.code ;inicia el segmento del programa
RESULTADO PROC FAR
    MOV AX,@DATA ;Inicio del programa
    MOV DS,AX
    ;Desplegar primer mensaje
    
    MOV AH,09
    lea DX,msg1
    int 21h
    ;Pedir un numero
    MOV AH,01
    int 21h
    MOV VAR1,AX
    ;Pedir un segundo numero
    MOV AH,01
    int 21h
    MOV VAR2,AX
    ;Pedir un tercer numero
    MOV AH,01
    int 21h
    MOV VAR3,AX
    ;Momento de evaluar la calificacion
    
    CMP AL,13           ;Comparacion
    JE CONTINUE   ;Salta si es igual
    JMP MAYOR      ;salto incondicional
    ;Inicia funcion
    CONTINUE:
        MOV AX,VAR1
        CMP AL,037h  ;7 es 37 en ascii
        JGE MAYOR   ;salta si es mayor o igual
        JMP MENOR   ;salto incondicional
        
    MAYOR:
        MOV AH,09
        lea dx,aprobado
        int 21h 
        JMP SALIR
        
    MENOR:
        MOV AH,09
        lea dx,reprobado
        int 21h
        JMP SALIR
        
    SALIR:
        MOV AX,4CH
        int 21h
        
    RESULTADO ENDP
END RESULTADO


Resultado del programa.




Como veran en la sintaxis, estamos guardando tres valores en nuestras variables. Al ingresar nuestra calificacion(80), guardamos el 8 en codigo ascii en una variable, el 0 en otra variable(tambien en ascii) y finalmente el enter en la ultima variable.
Para comparar, tomamos de base el 70 en codigo ascii para asi saber a cual de las dos funciones(menor o mayor) ira nuestro programa al comparar con el valor que ya le hemos dado.

No hay comentarios.:

Publicar un comentario