Este programa realiza la suma de dos números enteros sin signo en el EMU8086. Lo nuevo de este programa es la declaración y llamada a procedimientos.
Los procedimientos se utilizan para reducir las líneas de código principal y hacerlo más legible.
org 100h
jmp start
msg1 db 'digite primer numero: $'
msg2 db 'digite segundo numero: $'
msg3 db 'resultado= $'
salta db 0Dh,0Ah,24h
decenas db ?
unidades db ?
diez db 0ah
;procedimiento leer numero
lee_num proc
mov ah,01h
int 21h
ret
lee_num endp ;fin de procedimiento
;procedimiento saltar linea
saltar proc
mov dx,offset salta ;saltar a la sig linea
mov ah,09h
int 21h
ret
saltar endp ;fin de procedimiento
start:
mov ah,09h ;imprimir primer msg
lea dx,msg1
int 21h
call lee_num
sub al,30h ;hacemos el ajuste de caracter a numero
mov bl,al ;guardar primer numero en bl
call saltar
mov ah,09h ;imprimir segundo msg
lea dx,msg2
int 21h
call lee_num
sub al,30h ;ajustamos el numero
mov cl,al ;copiamos a cl
mov al,bl ;mover el primer numero a al
add al,cl ;sumar los dos numeros
mov ah,0000h ;pone a cero ah
idiv diez ;rutina para realizar la
mov decenas,al ;division y encontrar los
mov unidades,ah ;numeros en decimal
mov dx,0000h
mov ah,00h ;borrar pantalla
mov al,03h
int 10h
mov ah,09h ;imprimir tercer msg
lea dx,msg3 ;resultado = ...
int 21h
add decenas,30h ;imprimir las decenas
mov dl,decenas
mov ah,02h
int 21h
add unidades,30h ;imprimir las unidades
mov dl,unidades
mov ah,02h
int 21h
mov ah,4ch
int 21h
ret
No hay comentarios:
Publicar un comentario