harmonische Reihe mit x86-64 Versammlung
Versuch, eine harmonische Reihe zu berechnen.
Im Moment gebe ich die Nummer ein, auf die der Zusatz lauten soll.
Wenn ich eine kleine Zahl wie 1.2 eingebe, stoppt das Programm einfach, stürzt nicht ab, es scheint zu rechnen.
ABER es beendet nie das Programm
Hier ist mein Code
<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>
Der Code berechnet im Grunde genommen die 1/2 oder 1/3 oder 1/4 und addiert sie zu einer laufenden Summe. Anschließend wird verglichen, ob ich einen Wert erreicht habe, der über dem Wert liegt, den ich eingegeben habe
seht ihr meinen Fehler?