sábado, 4 de mayo de 2013

Division de dos números con ajuste ascii

Siguiendo con el ejemplo de la suma con ajustes ascii y acarreos, esta vez les pongo el código para una división, la división es solo de 1 digito y muestra el resultado con el residuo.

Programa en debugger

a
;pide primer número
mov ah,01
int 21
sub ah,01
sub al,30
mov cx,ax  ;lo respaldamos en cx
;Pide el segundo número
mov ah,01
int 21
sub ah,01
sub al,30
mov bx,ax  ;lo respaldamos en bx
aad  ;ajuste ascii para división
mov ax,cx  ;movemos el primer número a ax
mov cx,0000
mov dx,0000
div bx  ;Dividimos el contenido de ax entre bx (El resultado se guarda en al)
mov cx,dx ;El residuo se guarda en dl, lo respaldamos en cx
;Imprimimos el resultado
mov ah,02
mov dl,al
add dl,30
int 21
;imprimimos el residuo
mov ah,02
mov dl,cl
add dl,30
int 21
int 20

g

La imagen muestra la división de 9/3=3 con residuo 0, y 9/5=1 con residuo 4.


Programa en MASM

.model small
.stack 64
.data
.code
inicio:
mov ah,01h
int 21h
sub ah,01h
sub al,30h
mov cx,ax
mov ah,01h
int 21h
sub ah,01h
sub al,30h
mov bx,ax
aad
mov ax,cx
mov cx,0000
mov dx,0000
div bx
mov cx,dx
mov ah,02h
mov dl,al
add dl,30h
int 21h
mov ah,02h
mov dl,cl
add dl,30h
int 21h
jmp salir
salir:
    mov ah,4ch
    int 21h
end

Captura del programa, divide 9/3=3 residuo 0, 9/4=2 residuo 1.


Fue un ejemplo sencillo pero práctico, hasta la próxima.

No hay comentarios:

Publicar un comentario