Uso de la Multiplicación con Ensamblador 8086

El dia de hoy veremos ejemplos simples de multiplicación en ensamblador 8086 haciendo uso de subrutinas.



Antes que nada debemos saber que, la operación mul multiplicara los valores de los registros bx por ax, guardando el resultado en ax.

Codigo:
org 100h

mov ax,80
mov BX,10
mul bx 
ret


Resultado:

Primeramente iniciamos asignando los valores de 80 y 10 a los registros ax y bx correspondientemente, recordemos que se asignan en formato decimal



Al hacer la multiplicación obtendremos el numero 320 en hexadecimal en el registro AX, el cual es equivante a 800, siendo este el resultado




Codigo:

.model small
.stack
.data      
resultado db 0
mensaje db 10,13,"Resultado de multiplicar: $"
.code

mov ax,@data
mov ds,ax
                   
call valores
call multiplica    
call mostrar
          
mov ax,4ch
int 21h

valores proc
    mov ax,4d
    mov bx,2d
    ret   
valores endp
          
            
multiplica proc
    mul bx  
    call convierte  
   ret
multiplica endp
              
              
convierte proc
    add ax,30h
    mov resultado,al
    ret
convierte endp

mostrar proc
    mov ah,09
    lea dx,mensaje
    int 21h
    mov ah,02
    add ax,30h
    mov ah,02
    mov dl,resultado
    int 21h 
   ret
mostrar endp

end

Resultado:

Bajo el proceso anterior aplicamos lo mismo y lo ya conocido usado llamadas a subrutinas para organizar nuestro codigo y presentar el resultado en pantalla.





Ahora, es importante saber algo, dentro de lo que conocemos, los registros que empleamos tienen un rango definido para guardar valores, al momento de por ejemplo multiplicar 80 x 10,000 obtendremos 3500 en hexadecimal el equivalente a 13,568 pero deberia dar 800,000, este valor en cierto modo a superado el rango de lo que los registros en emu 8086 son capaces de soportar. 

Para almacenar valores mucho mas grandes es necesario ampliar el registro, esto lo logramos en terminos sencillos agregando un nemonico diferente, sin embargo debo recalcar, para poder usarlo el emulador o procesador que estemos usando debe ser compatible con la arquitectura que señala la siguiente tabla, correspondientemente.

Imagen obtenida de: https://es.slideshare.net/erwinmeza/ia32-introduccion

Comentarios