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

Autres architectures Assembleur Discussion :

Division entière en assembleur


Sujet :

Autres architectures Assembleur

  1. #1
    Candidat au Club
    Division entière en assembleur
    Bonjour à tous !

    Je dois effectuer une division entière sur un microcontrôleur PIC16F628 (8 bits). Ma première idée fût de faire une division en utilisant la soustraction. J'ai donc fait une boucle et il faut que j'analyse le fonctionnement de la mémoire STATUS. Mais je ne trouve pas d'information en ce qui concerne les valeurs qui s'y affichent (en hexadécimal, deux bits). Ce qui me serait très utile, puisque pour sortir de la boucle, j'utilise BTFSC. Je me demande donc, sur quel bit (de 0 à 7), je dois tester la condition et pourquoi. Si quelqu'un sait m'aider ?

    Ici, j'ai pris 20 diviser par 5, juste pour tester.

    D'avance merci


  2. #2
    Expert confirmé
    Bonjour,

    Le fabricant doit proposer la doc sur son site ...

    ... donc fait une petit effort.
    Le mysticisme est une maladie qui crée des problèmes là où il n’en existe pas.

  3. #3
    Candidat au Club
    Citation Envoyé par droggo Voir le message
    Bonjour,

    Le fabricant doit proposer la doc sur son site ...

    ... donc fait une petit effort.
    Bonjour !

    Après quelques petites recherches, j'ai vu qu'il était possible de tester le bit du carry qui passe à zéro dès que la soustraction repart dans l'autre sens. Au final, ma boucle fait un tour en trop. Comment pourrais-je faire pour avoir une division entière qui fonctionne ?


  4. #4
    Expert éminent
    J'ai jamais fait de pic , mais si j'ai bien compris , si le résultat se trouve à l'adresse 22 , alors tu fait toujours une incrémentation de 1.
    Si on se trouve dans un cas du genre 0/20 , ben ton résultat donnera 1 du coup ?

    Ares j'ai deja fait une division software , mais jamais fait un truc pareil (tu imagine que ça prendrait trop de temps de calcul de faire une boucle comme ça 255 fois ).
    Il existe une autre méthode assez rapide qui en plus permet de déplier la boucle , c'est de tester chaque bit et de faire la soustraction nécessaire
    Donc sur 8 bits, tu fais seulement 8 soustraction max (et sur 16 bits 16 soustractions etc etc )

  5. #5
    Candidat au Club
    Citation Envoyé par Kannagi Voir le message
    J'ai jamais fait de pic , mais si j'ai bien compris , si le résultat se trouve à l'adresse 22 , alors tu fait toujours une incrémentation de 1.
    Si on se trouve dans un cas du genre 0/20 , ben ton résultat donnera 1 du coup ?

    Ares j'ai deja fait une division software , mais jamais fait un truc pareil (tu imagine que ça prendrait trop de temps de calcul de faire une boucle comme ça 255 fois ).
    Il existe une autre méthode assez rapide qui en plus permet de déplier la boucle , c'est de tester chaque bit et de faire la soustraction nécessaire
    Donc sur 8 bits, tu fais seulement 8 soustraction max (et sur 16 bits 16 soustractions etc etc )
    Bonjour,

    En fait, le prof nous a demandé de faire une chose pour laquelle le PIC16F628 n'est pas vraiment conçu. Il n'est pas conçue pour faire ça et j'ai donc juste rajouté une soustraction après la fin de la boucle. En bref, ça n'a aucun sens et c'est la-dessus que je butais simplement.

    Merci pour ta réponse !

    Belle journée