IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Fonction sinus d'une calculatrice


Sujet :

Assembleur

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 0
    Points
    0
    Par défaut Fonction sinus d'une calculatrice
    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.

  2. #2
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    les données introduites ne doivent pas dépasser 4 digits hexadécimaux.
    un mot de 16 bits je suppose

    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)

  3. #3
    Membre actif
    Avatar de EtherOS
    Homme Profil pro
    Etudiant Polytechnicien
    Inscrit en
    Juillet 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant Polytechnicien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 58
    Points : 233
    Points
    233
    Par défaut Ma Proposition
    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.

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 0
    Points
    0
    Par défaut
    Je vous remercie

    Mais est il possible de m'envoyer le code au moins le début du code pour me faciliter la tache!

    je serais très reconnaissante

  5. #5
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    xor dx,dx          ;diviser par un mot 
    mov cx,360
    div cx
    mov si,dx
    shl si,1      ;reviens a multiplier si par 2 (2puissance1) car la table est constitué d'élément de 2 octet
    mov ax,[si+tablesinus]
    et la table de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    tablesinus:
    dw 0         ;sin0=0
    dw 17       ;sin1=0.017
    dw 34       ;sin2=0.034
    dw 52       ;sin3=0.052
    ....
    dw 999     ;sin89=0.999
    dw 1000   ;sin90=1
    dw 999     ;sin91=0.999
    etc...

Discussions similaires

  1. Créer une fonction sinus
    Par fregate dans le forum MATLAB
    Réponses: 6
    Dernier message: 16/12/2008, 11h11
  2. Tracer une fonction sinus
    Par sirne dans le forum C++
    Réponses: 9
    Dernier message: 11/04/2008, 15h03
  3. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15
  4. Fonction dependante d'une proba.
    Par Choupi dans le forum C
    Réponses: 4
    Dernier message: 24/10/2003, 19h48
  5. [VBA-E] Fonction sum() dans une cellule
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2002, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo