Practica 8 / emu8086

El siguiente código es para obtener el resultado de una operación entre dos números. Las operaciones que permite resolver son: Suma, Resta, Multiplicación y División.

Codigo:
org 100h ; inicia el programa
include 'emu8086.inc' ;Incluye funciones de libreria emu8086 
; DEFINE_SCAN_NUM
; DEFINE_PRINT_STRING
 DEFINE_PRINT_NUM
 DEFINE_PRINT_NUM_UNS
mov si, 0
mov al, 0
;Convertir la primera cadena a numero
 cadAnum:
cmp cad1[si], "$"
 jz seguir

 mov bl, 10 
 mul bl
sub cad1[si], '0' 
 add al, cad1[si]

 inc si
loop cadAnum

seguir:
mov aux1, al
;Convertir la segunda cadena a numero
mov si, 0
mov al, 0
cadAnum2:
cmp cad3[si], "$"
 jz seguir2

 mov bl, 10 
 mul bl
sub cad3[si], '0' 
 add al, cad3[si]

 inc si
loop cadAnum2

seguir2:
mov bl, al 
mov al, aux1
;realizar operaciones normalmente teniendo ya los dos numeros decimales
cmp cad2, "-"
jz resta 
cmp cad2, "+"
jz suma 
cmp cad2, "*"
jz multi 
cmp cad2, "/"
jz divi
resta: 
sub al, bl
jmp fin
suma: 
add al, bl
jmp fin
multi: 
mul bl
jmp fin
divi: 
div bl
jmp fin

fin:
mov bx, ax
mov ah,09 
lea dx,msg
int 21h 
mov ax, bx
call PRINT_NUM
ret
cad1 db "99$"
cad2 db "+"
cad3 db "1$"
aux1 db ?
aux2 dw ?
msg dw "El resultado es: $"

Resultado:


Comentarios

Entradas populares de este blog

2.12 Instrucciones lógicas.

2.9 Instrucciones aritméticas.

2.10 Manipulación de la pila.