Divisão e comparação de números em Assembly
|
19-05-2012, 22:39
Mensagem: #1
|
|||
|
|||
Divisão e comparação de números em Assembly
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 |
|||
21-05-2012, 14:42
Mensagem: #2
|
|||
|
|||
RE: Divisão e comparação de números em Assembly
Olá
Experimenta fazer a divisão assim, MOV AX, num1 MOV CX, num2 DIV CX O resto da divisão fica guardado no registo DX. Quanto à comparação não tenho a certeza como se faz, mas deve ter haver com o bit mais significativo ou algo assim... “A neutron walks into a bar and asks how much for a drink. The bartender replies, ‘For you, no charge.’” - Sheldon Cooper |
|||
21-05-2012, 14:46
Mensagem: #3
|
|||
|
|||
RE: Divisão e comparação de números em Assembly
nioxys obrigada pela sua resposta, mas esse problema já está resolvido. Agora a minha dúvida prende-se na questão de ligar o resultado da divisão, à comparação. E isso sim não está a funcionar...
|
|||
21-05-2012, 15:28
Mensagem: #4
|
|||
|
|||
RE: Divisão e comparação de números em Assembly
Não tinha percebido isso.
Como queres fazer a comparação? Queres comparar com o quê? “A neutron walks into a bar and asks how much for a drink. The bartender replies, ‘For you, no charge.’” - Sheldon Cooper |
|||
21-05-2012, 18:12
Mensagem: #5
|
|||
|
|||
RE: Divisão e comparação de números em Assembly
Entendeu bem, mas desde que postei já foi resolvido o problema da divisão.
Eu tenho: cmp ax, 2500 jge acima cmp ax, 1900 jge ideal cmp ax, 1800 jle menos 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 corresponde ao valor que me dá na divisão. Mas se eu usar 'mov ax, <IMC>' e puser um valor de IMC para ele correr a mensagem, ele corre. |
|||
« Mais Antigo | Mais Recente »
|
Utilizadores a ver este tópico: 1 Visitante(s)