Analisis del video: Lectura de Caracteres en Lenguaje Ensamblador

El dia de hoy veremos como leer caracteres numericos por teclado y hacer operaciones sencillas


Servicios a utilizar:
Servicio 01 de la interrupcion 21h para leer caracteres guardados en el registro AL

Ejemplo de lectura:
mov ah,01 ;-Con esto se invoca al servicio 01: el cual guarda el contenido leido por teclado en AX
int 21h; invoca la interrupcion para salida por pantalla

*Notas: 
-solo es posible leer un solo carecter (no cadenas) por este metodo.
-Los elementos leidos son cargados bajo su interpretación en codigo ascii en formato hexadecimal o decimal (dependiendo de la maquina), de esta manera para cualquier calculo numerico se debera hacer uso de una operacion aritmetica (la resta de 48 o 30h al valor leido por teclado para obtener su valor numerico real).
        Esto ultimo seria mediante los comandos:
        sub AL,48     o   sub AL,30h
        De igual manera para la Impresion sera necesario hacer la operacion contrarea:
        add AL,48    o    sub AL,30h
-Para mandar a impresion se usan las siguientes lineas:
        mov ah,02 ;  -Se invoca al servicio 02: que permite la manipulacion del display (pantalla)
        mov DL,AL ; -Se pasa la información de AL a DL para impresion
        int 21h;        -Uso la interrumpción 21h para la salida por pantalla


.model small
.stack 64  
        ;declaracion de datos
.data
    n1 db 0
    n2 db 0
    suma db 0
    msg1 db "Dame el primer valor:",'$'
    msg2 db 10,13,"Dame el segundo valor:",'$'
    msg3 db 10,13,"Suma=",'$'
        ;declaracion de codigo   
.code
    begin proc far ;Defino un procedimiento
        ;direccionamos al segmentos de datos
        mov ax,@data
        mov ds,ax
        
        ;solicitamos el primer digito
        mov ah,09
        lea dx,msg1
        int 21h
        ;se lee el primer valor
        mov ah,01
        int 21h
        sub al,30h   ;convierte el caracter en numero
        mov n1,al  
        
        ;solicitamos el segundo digio
        mov ah,09
        lea dx,msg2
        int 21h
        ;se lee el segundo valor
        mov ah,01
        int 21h
        sub al,30h   ;convierte el caracter en numero
        mov n2,al 
        
        ;operacion
        mov al,n1
        add al,n2
        add al,30h;convierto a caracter
        mov suma,al 
        mov ah,09
        lea dx,msg3
        int 21h
        
        ; se imprime el caracter con el servicio 02 de la interrupcion 21h
        mov ah,02
        mov dl,suma
        int 21h
        mov ah,4ch  ;Devuelve el control al equipo
        int 21h
        Begin endp ;especifico el termino del procedimiento
        end         ;especifico el final del bloque de codigo
        
Salida:


Comentarios