|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
asma Étudiant Inscription : janvier 2013 Messages : 2 ![]() |
Bonsoir tout le monde
J'aurais besoin d'un code pour faire la fonction sinus d'une calculatrice en Assembleur, sachant que les données introduites ne doivent pas dépasser 4 digits hexadécimaux. Merci d'avance. |
|
|
01
|
|
|
#2 | |
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
Citation:
comme sinus est une fonction périodique je te conseil de commencer par diviser ton nombre en entrée par la période T de ton sinus (T=360 si ton entrée est exprimé en degré) et de conserver le reste de ta division tu te retrouveras avec un valeur intermédiaire variant de 0 a T-1 ensuite il faudrait aller chercher le résultat dans une table de correspandance angle/valeur de sinus précalculé (a la main) ou alors de passer par le FPU (unité de calcul a virgule flottante, une partie du processeur qui sert aux calcul mathématique) a condition bien sur d'avoir un processeur qui ait cette option l'inconvénient de cette méthode c'est que ça consomme plus de mémoire qu'en passant par le FPU, l'avantage c'est que l'on peut l'adapter a tout type de fonction périodique (sous réserve de quantité suffisante de ram) |
|
|
10
|
|
|
#3 |
|
Membre habitué
![]() ![]() Lionel TidjonEtudiant Polytechnicien Inscription : juillet 2012 Messages : 51 ![]() |
Je suis du même avis je vais juste ajouter une petite touche :
==========IF FAUT GERER TOUS LES CAS============== Je te conseille d'écrire de faire un scénario de test pour la fonction sin cela te permettra de gérer tous les contraintes de la fonction sinus. 1. Paramètres_entrants : Input est de dim 1 et supposons une variable x Paramètres_sorties : Output est de dim 1 et suppposons sin(x) =y 2. Les contraintes : => -1 <= sin(x) <= 1 => x dans R on peut se restreindre à [-2kpi, 2kpi] où k dans Z => si x <= 0 sin(x) <= 0 sinon sin(x) > 0 2.1 Cas nominal : On entre des angles triviaux 30 ,60, 28,13,etc... 2.2 Fonction de test: TEST(Donnée_Entrée , Fonction_à_tester , Fonction_de_test, Resultat_attendu, Precision) où : (a) Donnée_entrée : voir 1. (b) Fonction_à_tester : sin (c) Fonction_de_test: arcsin (d) Resultat_attendu : x (e) Précision : 10E-20 (flottant) 2.2 Cas Limite : => x est proche de 0 : 0.00123 x 10^77 ou -0.0000023456 => x est trés grand ou infini : Ex: -209938456,12345 ou 23,33333456 x 10^98 => x irrationnel : EX: exp(1) , PI , sqrt(2), -11,333456, -exp(PI) La fonction de test doit renvoyer(x) dans tous ces cas. |
|
|
10
|
|
|
#4 |
asma Étudiant Inscription : janvier 2013 Messages : 2 ![]() |
Je vous remercie
![]() Mais est il possible de m'envoyer le code je serais très reconnaissante |
|
|
01
|
|
|
#5 | ||||
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
faut tout faire ici....
je suppose que tu calcul un sinus sur un angle exprimé en degré dans le registre AX et que tu attend une réponse exprimé en millième dans AX la fonction: Code :
Code :
|
||||
|
00
|
Copyright © 2000-2013 - www.developpez.com