;EMU8086
.model small ;Modelo de memoria
.stack
.data ;Definicion de datos(variables), donde se
almacenara informacion
.code
;Variables del primer numero ingresado
unidades_n1 db ?
decenas_n1 db ?
;Variables del segundo numero ingresado
unidades_n2 db ?
decenas_n2 db ?
;Variables temporales para los resultados de la primera multiplicacion
res_temp_dec_n1 db ?
res_temp_cen_n1 db ?
;Variables temporales paara los resultados de la segunda multiplicacion
res_temp_dec_n2 db ?
res_temp_cen_n2 db ?
;Variables para los resultados
res_unidades db ?
res_decenas db ?
res_centenas db ?
res_uni_millar db ?
;Variable de acarreo en multiplicacion
acarreo_mul db 0
;Variable de acarreo en suma
acarreo_suma db 0
.startup
;cls
mov ah,00h ;Function(Set
video mode)
mov al,03 ;Mode 80x25 8x8
16
int 10h ;Interruption Video
mov ah,01h
;Function(character read)
int 21h ;Interruption
DOS functions
sub al,30h ;ajustamos
valores
mov decenas_n1,al ;[chr1].chr2 *
chr3 = ac.r1.r2
mov ah,01h
;Function(character read)
int 21h ;Interruption
DOS functions
sub al,30h ;Ajustamos
valores
mov unidades_n1,al ;chr1.[chr2] * chr3 = ac.r1.r2
mov ah,02h
;Function(character to send to standard output)
mov dl,'*' ;Character to
show
int 21h
mov ah,01h ;Function(Read
character)
int 21h ;Interruption
DOS Functions
sub al,30h ;Transform(0dec
= 30hex)
mov decenas_n2,al ;chr1.chr2 *
[chr3] = ac.r1.r2
mov ah,01h ;Function(Read
character)
int 21h ;Interruption
DOS Functions
sub al,30h ;Transform(0dec
= 30hex)
mov unidades_n2,al
mov ah,02h ;Character to
send to standar output
mov dl,'=' ;
int 21h ;Interruption
DOS functions
;Realizamos las operaciones
;Primera multiplicacion ;
Explicacion utilizando la multiplicacion de 99*99 ->(n1*n2)
mov al,unidades_n1 ; al=9
mov bl,unidades_n2 ; bl=9
mul bl ; 9*9=81
-> (al=81)
mov ah,00h ;
AAM ; Separa
el registro ax en su parte alta y baja
mov acarreo_mul,ah ;
acarreo_mul = 8
mov res_unidades,al ;
res_unidades= 1 -> Reultado de unidades
;Segunda multiplicacion
mov al,decenas_n1 ; al=9
mov bl,unidades_n2 ; bl=9
mul bl ; 9*9=81
-> (al=81)
mov res_temp_dec_n1,al ;
res_temp_dec_n1= 81
mov bl,acarreo_mul ; bl= 8
add res_temp_dec_n1,bl ;
res_temp_dec_n1= 81+8= 89
mov ah,00h ;
mov al,res_temp_dec_n1 ; al= 89
AAM ; Separa
el registro ax en su parte alta y baja
mov res_temp_cen_n1,ah ;
res_temp_cen_n1= 8
mov res_temp_dec_n1,al ;
res_temp_dec_n1= 9
;Tercera multiplicacion ; Resultado actual = 000>1
mov al,unidades_n1 ; al= 9
mov bl,decenas_n2 ; bl= 9
mul bl ; 9*9=81
-> (al=81)
mov ah,00h ;
AAM ; Separa
el registro ax en su parte alta y baja
mov acarreo_mul,ah ;
acarreo_mul= 8
mov res_temp_dec_n2,al ;
res_temp_dec_n2= 1
;
mov bl, res_temp_dec_n1 ; bl= 9
add res_temp_dec_n2,bl ;
res_temp_dec_n2= 1+9= 10
mov ah,00h ;
mov al, res_temp_dec_n2 ; al = 10
AAM ; Separa
el registro ax en su parte alta y baja
mov acarreo_suma, ah ;
acarreo_suma = 1
mov res_decenas,al ;
res_decenas = 0 -> Reultado de
decenas
;Tercera multiplicacion ;
Resultado actual = 00>01
mov al,decenas_n1 ; al= 9
mov bl,decenas_n2 ; bl= 9
mul bl ; 9*9=81
-> (al=81)
mov res_temp_cen_n2,al ; res_temp_cen_n2=
81
mov bl,acarreo_mul ; bl= 8
add res_temp_cen_n2,bl ;
res_temp_cen_n2= 89
mov ah,00h ;
mov al,res_temp_cen_n2 ; al= 89
AAM ; Separa
el registro ax en su parte alta y baja
mov res_uni_millar,ah ;
res_uni_millar = 8
mov res_temp_cen_n2,al ;
res_temp_cen_n2= 9
;
mov bl, res_temp_cen_n1 ; bl= 8
add res_temp_cen_n2, bl ;
res_temp_cen_n2= 17
mov bl, acarreo_suma ; bl= 1
add res_temp_cen_n2,bl ;
res_temp_cen_n2= 17+1= 18
mov ah,00h ;
mov al,res_temp_cen_n2 ; al= 18
AAM ;
mov acarreo_suma,ah ;
acarreo_suma= 1
mov res_centenas,al ;
res_centenas= 8 -> Resultado de centenas
; Resultado actual=
0>801
mov bl, acarreo_suma ; bl= 1
add res_uni_millar, bl ;
res_uni_millar= 8+1= 9 -> Resultado de unidades de millar
; Reultado actual
9801
;Mostramos resultados
mov ah,02h
mov dl,res_uni_millar
add dl,30h
int 21h
mov ah,02h
mov dl,res_centenas
add dl,30h
int 21h
mov ah,02H
mov dl,res_decenas
add dl,30h
int 21h
mov ah,02H
mov dl,res_unidades
add dl,30h
int 21h
.exit
end
No hay comentarios:
Publicar un comentario