Académique Documents
Professionnel Documents
Culture Documents
mov reg, dh
mov col, dl
mov bl,v1
mov al,v2
sub bl,al
mov resultado, bl
imp_resultado
jmp fin_ope
multiplicacion:
mov reg, dh
mov col, dl
mov bl,v1
mov al,v2
and ah,00h
cmp v1, 0
jl mult_c_s
jmp filtro
mult_c_s:
imul bl
jmp cont_pro
filtro:
cmp v2, 0
jl mult_c_s
jmp mult_normal
mult_normal:
mul bl
jmp cont_pro
cont_pro:
mov resultado, al
imp_resultado
jmp fin_ope
division:
mov reg, dh
mov col, dl
cmp v1, 0
jl mulneg1
mov ban_neg, 0
jmp filtro2
mulneg1:
mov ban_neg, 1
mov al, -1
and ah, 00h
mov bl, v1
imul bl
mov v1, al
jmp filtro2
filtro2:
cmp v2, 0
jl mulneg2
cmp ban_neg, 1
je cam_neg
mov ban_neg, 0
cam_neg:
jmp divi
mulneg2:
cmp ban_neg, 1
je cam_sig
mov ban_neg, 1
jmp cambio
cam_sig:
mov ban_neg, 0
jmp cambio
cambio:
mov al, -1
and ah, 00h
mov bl, v2
imul bl
mov v2, al
jmp divi
divi:
mov bl, v1
mov al, v2
xchg ax, bx
cwd
div bx
mov resultado_div, ax
imp_divi
jmp fin_ope
err3:
ubiposcur 4
jmp lec_sig_ope
fin_ope:
ENDM
; MACRO QUE IMPRIME EL RESULTADO DE LA SUMA, RESTA O MULTIPLICACIN
imp_resultado MACRO
LOCAL m9, m0, normal, separ, division, n_imp_res, fimp_resultado
cmp resultado,9
jg m9
cmp resultado,0
jl m0
jmp normal
m9:
mov bl,resultado
mov al,10
and ah,00h
and bh,00h
xchg ax,bx
cwd
div bx
mov bx,ax
mov rd,dl
mov ah,02h
mov dx,bx
add dl,30h
int 21h
mov dl,rd
add dl,30h
int 21h
jmp fimp_resultado
m0:
mov al, -1
and ah,00h
imul resultado
mov resultado, al
cmp resultado,10
jl separ
mov bl,resultado
mov al,10
mov dist, 2
jmp division
separ:
mov bl,resultado
mov al,1
mov dist, 1
division:
and ah,00h
and bh,00h
xchg ax,bx
cwd
div bx
mov bx,ax
mov rd,dl
int 21h
cmp dist,1
je n_imp_res
mov dl,rd
add dl,30h
int 21h
n_imp_res:
mov al, -1
and ah,00h
imul resultado
mov resultado, al
jmp fimp_resultado
normal:
mov dl,resultado
add dl, 30h
int 21h
jmp fimp_resultado
fimp_resultado:
ENDM
imp_divi MACRO
LOCAL imp_resneg, fin_imp_divi
cmp ban_neg, 1
je imp_resneg
jmp fin_imp_divi
imp_resneg:
mov ax, -1
and ah, 00h
imul bx
mov resultado_div, ax
jmp fin_imp_divi
fin_imp_divi:
mov ban_neg, 3
ENDM