Coprocesseur 8087... Erreur implacable...

cs_misterpatate Messages postés 22 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 20 septembre 2006 - 18 avril 2004 à 17:45
cs_misterpatate Messages postés 22 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 20 septembre 2006 - 1 mai 2004 à 19:08
J'ai déjà posté un message à propos de mon programme qui utilise le coprocesseur pour calculer la position d'une boule qui bouge à l'écran. Maintenant j'essaie de la faire rebondir... Tout se passe pour le mieux (détection du rebond, calcul nouvel angle de la trajectoire ...) si ce n'est qu le programme plante en me disant :

C:\windows\system32\cmd.exe
Le processeur NTVDM a rencontré une instruction non autorisée.
CS:0000 IP:006e OP:df 0f ad 06 10 Choississez 'Fermer' pour mettre fin à l'application.

En faisant du pas à pas je me suis aperçu que c'est au moment de quitter mon sous-programme de calcul du ouvel angle dont voici le code :

rebond :
push bx
mov bx,0
fld teta[bx]

fsin
fld n[bx]
fmul ST(0),ST(1) ;ST(0)=n*sin(teta)

fld ST(0) ;copie de ST(0) dans ST(1)
fmul ST(0),ST(1) ;ST(0)=(n*sin(teta))²

fld un[bx]
fsub ST(0),ST(1)
fsqrt ;ST(0)=sqrt(1-(n*sin(teta))²)
;ST(2)=n*sin(teta)

fxch ST(2)
fld ST(2)

fpatan ; arctan(ST(1)/ST(0))

fstp qword ptr[teta] ;charge ST(0) dans teta
; *merci à BruNews *

ffree ST(0)
ffree ST(1)
ffree ST(2)
pop bx
ret ;Plantage au passage de cette commande

Je souspone une erreur dans la pile ou un truc du genre... peut-être perd-il l'adresse de retour dans le programme principal... Bref si queqlqu'un est assez charitable, merci d'avance.

moi

4 réponses

cs_Vermifuge Messages postés 75 Date d'inscription samedi 23 mars 2002 Statut Membre Dernière intervention 18 septembre 2006
20 avril 2004 à 15:27
Heu.. là t'as vraiment une erreur zarb. Tente de faire un "push offset rebond" avant ton ret et regarde ce que ça donne. Parce que là je vois pas trop le problème.

@+
Vermi
0
cs_misterpatate Messages postés 22 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 20 septembre 2006
29 avril 2004 à 11:29
merci ça m'a bien aidé à sortir de ce problème mais bon on ne sait toujours pas trop pourquoi... Plus qu'à régler certains détails de rebonds et c'est bon...

merci encore
moi
0
cs_Vermifuge Messages postés 75 Date d'inscription samedi 23 mars 2002 Statut Membre Dernière intervention 18 septembre 2006
29 avril 2004 à 12:43
Oui, ça n'explique pas le problème. C'est vraiment vraiment innexplicable. :(

@+
Vermi
0
cs_misterpatate Messages postés 22 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 20 septembre 2006
1 mai 2004 à 19:08
Bon grâce à vous mon programme marche bien... je vais essayer de mettre la source en ligne dès que je l'aurai un peu commentée.

merci à tous

moi
0
Rejoignez-nous