El dia de hoy veremos ejemplos simples de multiplicación en ensamblador 8086 haciendo uso de subrutinas.
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
Publicar un comentario