Hola en este programa haremos una suma de dos numeros solicitados al usuario con acarreo, la suma de los números es solo de un digito.
El acarreo nos sirve cuando una operación en este caso la suma sobrepasa el límite de un registro, en este caso la parte baja solo almacena una caracter y la parte alta del registro guarda otro caracter, cuando una suma sea mayor a 9, por ejemplo un 10, guardar el primer digito (el 1) en la parte alta del registro, el segundo número (el 0) lo guarda en la parte baja, para imprimirlos hay que imprimir la parte alta y baja por separado.
a
;pedimos el primer número
mov ah,01
int 21
sub al,30 ;ajustes para decimal
mov bl,al
;pedimos el segundo número
mov ah,01
int 21
sub al,30
add al,bl ;realizamos la suma de los dos números
;Ajuste de la suma con acarreo
aaa
or ax,3030 ;Ajusta la parte alta y la parte baja del registro ax
mov bx,ax
sub bh,01
;Impresión de carateres
mov ah,02
mov dl,bh ;Imprimimos la parte alta
int 21
mov ah,02
mov dl,bl ;Imprimimos la parte alta
int 21
int 20
Captura de la suma de dos numeros 5+5=10
Mismo programa en MASM
.model small
.stack 64
.data
.code
inicio:
;pedir primer número
mov ah,01h
int 21h
sub al,30h
mov bl,al
;pedir segundo número
mov ah,01h
int 21h
sub al,30h
add al,bl
;Ajuste ascii para la suma
aaa
or ax,3030h
mov bx,ax
sub bh,01h
;impresion parte alta
mov ah,02h
mov dl,bh
int 21h
;impresion parte baja
mov ah,02
mov dl,bl
int 21h
salir:
mov ah,04ch
int 21h
end
En este ejemplo sumo los números 7+8=15
En conclusión: Es esencial en un programa no olvidarse del acarreo en los registros ni los ajustes ascii o decimal, de lo contrario al imprimir algún caracter puede imprimir otro símbolo que no sea el número del resultado, se utiliza principalmente cuando se hacen operaciones aritméticas.
Buen ejemplo
ResponderEliminar