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
Publicar un comentario