;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
jueves, 15 de marzo de 2018
Programa de multiplicación de números de 2 cifras
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario