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