Можно создать дубликат:
harmonic series with x86-64 assemblyСуммирование в ассемблере
пытается сделать версию гармонического ряда в сборе
Текущий код занимает 1 + 1/2 + 1/3 + 1/4 + 1/n, пока значение, которое суммируется, больше значения, которое было введено. (Значение с плавающей точкой)
в настоящее время код выходит из цикла после первого цикла через и печатает .33333
это мой выход состояние?
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
addParts:
fxch st2 ;put the current value that is in st2 into st0
fadd qword [currentSum] ;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
jae done ;jump if greater than
jmp denomLoop ;jump if less than
Вы должны выполнить свой код в отладчике, вместо того чтобы просить незнакомых людей обнаружить проблему. –
oh спасибо за ваш вклад, я думал, что доска объявлений должна помогать сотрудничать и помогать друг другу? вы думаете, что я еще не пытался отлаживать это сам? – user1050632
Stack Overflow - это не доска объявлений; это не место, чтобы заставить других отлаживать ваш код для вас. Вы не указали результаты каких-либо отладочных усилий с вашей стороны. Если бы вы прошли через это в отладчике, вы могли бы ответить на собственный вопрос. –