série harmônica com montagem x86-64
Tentando calcular uma série harmônica.
Agora eu estou digitando o número que eu quero que a adição suba.
Quando eu digito um número pequeno como 1.2, o programa simplesmente pára, não falha, parece estar fazendo cálculos.
Mas nunca termina o programa
aqui está meu código
<code>denominator: xor r14,r14 ;zero out r14 register add r14, 2 ;start counter at 2 fld1 ;load 1 into st0 fxch st2 denomLoop: fld1 mov [divisor], r14 ;put 1 into st0 fidiv dword [divisor] ;divide st0 by r14 inc r14 ;increment r14 fst qword [currentSum] ;pop current sum value into currentSum jmp addParts addParts: fld qword [currentSum] fadd st2 ;add result of first division to 1 fxch st2 ;place result of addition into st2 fld qword [realNumber] ;place real number into st0 ;compare to see if greater than inputed value fcom st2 ;compare st0 with st2 fstsw ax ;needed to do floating point comparisons on FPU sahf ;needed to do floating point comaprisons on FPU jg done ;jump if greater than jmp denomLoop ;jump if less than </code>
O código é basicamente computar o 1/2 ou 1/3 ou 1/4 e adicioná-lo a uma soma corrente, então compara para ver se eu alcancei um valor acima do que eu digitei, uma vez que ele deve sair do loop
vocês vêem o meu erro?