- Código
.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