1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Divisão e comparação de números em Assembly

Discussão em 'Programação' iniciada por koch16, 19 de Maio de 2012. (Respostas: 2; Visualizações: 2068)

  1. Estou a fazer uma calculadora de IMC (indice de massa corporal) em Assembly 8086 e tenho os seguintes problemas:

    Overflow na divisão;
    Problemas em comparação de valores;

    O calculo do IMC = peso / (altura*altura), em que eu estou a tratar o peso como num1 e altura como num2.

    em que depois de inserir os números tenho:

    ; para multiplicar a altura
    mov ax, num2
    mul num2

    ;para dividir o peso pela altura já multiplicada
    ;Aqui é que há o problema
    mov dx, 0
    mov ax, num1
    mov bx, num2
    div bx



    Depois o problema é em comparar o valor obtido, não sei como fazer essa parte, será que usando JB, JA ou JMP resolvo o problema? Se sim, alguém me pode dar um breve exemplo?


    Obrigada
     
  2. cmp resultado da divisao, numero que queres comparar - definir b,w ou l -byte, word ou long -dependendo do tamanho que estas a usar
    jg maior
    jl menor
    je igual

    maior:
    codigo
    jmp fim

    menor:
    codigo
    jmp fim

    igual:
    codigo
    jmp fim

    fim:
    pop de registos
    ret
     
  3. Vermillion, eu estou a fazer assim:

    ;para o caso do valor ser igual ao menor
    cmp cx, '18'
    jle menos

    ;para o caso do valor ser igual ao maior
    cmp cx, '19'
    jge ideal
    ;para o caso do valor ser igual ao menor
    cmp cx, '24'
    jle ideal

    ;etc...


    menos: mov dx, offset msg1
    jmp print
    ideal: mov dx, offset msg2
    jmp print

    print: putc 0Dh
    putc 0Ah


    mov ah, 9
    int 21h


    E não dá certo =S
     

Partilhar esta Página