J'ai deux problèmes avec mon code d'assemblage. Selon les directives, je dois faire tout cela en utilisant l'opération à virgule flottante. Cela dit, il semble que je ne reçois pas la bonne réponse à partir de cela, et je ne sais pas ce qui ne va pas. La fonction est la suivante: y = 3x^3 + 2.7x^2-74x + 6.3. Je dois donner X, et il est supposé aller dans cette fonction et la sortie Y.Le virgule flottante ne sort pas la bonne réponse
Le code est également supposé se terminer lorsque je tape N, mais il continue à me donner une erreur de virgule flottante.
EDIT: J'ai trouvé mon problème avec la fonction, mais chaque fois que je tape N, elle ne saute pas et ne termine pas mon code.
input REAL8 ? ; user input
result REAL8 ? ; result of calculation
three REAL8 3.0 ; constant
twoSeven REAL8 2.7 ; constant
seventyFour REAL8 74.0 ; constant
sixThree REAL8 6.3 ; constant
prompt BYTE "Enter an Integer or n to quit",0dh,0ah,0
again BYTE "Would you like to go again? Y/N?", 0dh, 0ah, 0
no BYTE "N",0dh,0ah,0
rprompt BYTE "The result of the calculation is ",0
.code
main PROC
result_loop:
finit ; initialize the floating point stack
mov edx,OFFSET prompt ; address of message
call WriteString ; write prompt
call ReadFloat ; read the input value
fst input ; save input of user
fmul three ; multiplies by three
fadd twoSeven ; Adds by 2.7
fmul input ; multiplies by the input
fsub seventyFour ; subtracts 74
fmul input ; multiplies by input
fadd sixThree ; adds by three
fst result ; puts value in area
mov edx,OFFSET rprompt ; address of message
call WriteString ; write prompt
call WriteFloat ; writes the result
call CrLf ; prints new line
mov edx, OFFSET again
call WriteString
Call ReadString
cmp edx, 'n' ; compares the input to n
je end_if ; jumps if its equal to n
jmp result_loop ; jumps back to the top
end_if: ; end statment
call WaitMsg ;
exit ;
main ENDP
END main
entrée 'FCOMI, « n'' n'a aucun sens. Vous voulez probablement lire une chaîne, la comparer à '" n "', et si ce n'est pas égal, la convertir en float. – Jester
@jester J'ai fait un tweak mineur au code, en ajoutant input2, et en essayant de configurer la comparaison entre n et l'entrée, mais je suis toujours à court. – Unleaver
'' n''est pas un nombre, tu le réalises, non? Vous ne pouvez pas le lire comme un flotteur. – Jester