Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
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
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
21-05-2012, 14:42
Mensagem: #2
RE: Divisão e comparação de números em Assembly
Olá Smile

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
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
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...
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
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
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
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.
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)