Assembleur
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Assembleur



  1. #1
    invite7e907829

    Assembleur


    ------

    Bonjour,
    je suis actuellement en train d'apprendre mon cours de microcontrolleur et je ne comprends pas quelques points :
    - Toutes ces histoires de bit sur 14 puis 13 pour les instructions
    - deja le OPCODE il est sur combien de bit? comment est-il defini?
    - De plus dans mon cours le prof fait une decription des instructions.

    Par exemple: DECF
    syntax DECF f, d
    Operands 0<=f, <=127
    d = { 0,1}
    Operation (f)-1 ->dest
    status Z
    encoding 00 0011 dfff ffff
    Cycles 1
    word 1

    Je ne comprends absolument pas le status, l'encoding, pourquoi 1 cylce et 1 mot.
    Si quelqu'un pourrait m'eclaicir SVP.

    -----

  2. #2
    invite7c3c9aaf

    Re : Assembleur

    DECF
    syntax DECF f, d
    Operands 0<=f, <=127
    d = { 0,1}
    Operation (f)-1 ->d
    status Z
    encoding 00 0011 dfff ffff
    Cycles 1
    word 1
    Ce que j'en comprend :

    Décrémentation de f avec f (contenu de F ou valeur directement placée ou contenu d'adresse etc.. selon le mode d'adressage -direct, indirect etc-) compris dans [0;127] c'est à dire f peut prendre 128 valeurs.

    d = 0 ou 1 doit certainement dire la destination du résultat : genre si d=1 alors résultat envoyé "dans f" (là encore, la signification dépend de ton adressage) sinon (d=0) dans le registre d'execution.
    Z, le "status" n'est q'un flag de zero

    encoding : les 6 bits de gauche sont la commande elle-même, rien de spécial à comprendre
    Le bit suivant (d) contiendra le d que tu as mis lorsque les 16 bits code seront envoyé au microP
    les 7 bits les plus à droite comportent le f, et on voit bien 2^7 = 128 valeurs possibles

    Cycle te donne le temps que l'instruction va prendre à être moulinée (oui, c'est une superbe expression ^^) en se basant sur ton cycle d'horloge; le nombre de mot doit être la taille de cette instruction (un mot = 16 bits).

    Peut être que je n'ai fait que dire des choses que tu savais déjà et que je n'ai pas cerné ton problème, mais n'hésite pas à reposer les questions s'il le faut !

  3. #3
    invite936c567e

    Re : Assembleur

    Citation Envoyé par poupi90 Voir le message
    Bonjour,
    je suis actuellement en train d'apprendre mon cours de microcontrolleur et je ne comprends pas quelques points :
    - Toutes ces histoires de bit sur 14 puis 13 pour les instructions
    - deja le OPCODE il est sur combien de bit? comment est-il defini?
    - De plus dans mon cours le prof fait une decription des instructions.
    Des micro-contrôleurs, il en existe de nombreux modèles, chacun avec des jeux d'instructions propres et des caractéristiques particulières. Si tu veux une réponse précise, il faut indiquer de quoi tu parles.

    La largeur en nombre de bits des mots de la mémoire de programme étant fixe, les instructions codées occupent toujours un nombre entier de ces mots, même si certains bits ne sont finalement pas utilisés. Par exemple le PIC16C84 utilise des mots de 14 bits, le PIC18F2455 utilise des mots de 16 bits, et le 8048 utilise des mots de 8 bits.

    L'OPCODE est la partie du code de l'instruction qui détermine quel est le type d'opération à réaliser, et correspond généralement à un mnénomique assembleur qui lui est spécifique. Le nombre de bits qu'il occupe dans le code peut varier d'une instruction à l'autre. Les autres bits du code constituent l'OPERAND, et déterminent quant à eux ce sur quoi va porter l'opération.


    Dans ton exemple, les instructions sont codées sur 14 bits.

    Le mnénomique DECF (qui signifie « DECrement File register ») correspond à un code composé :
    - d'un OPCODE sur 6 bits fixé à 00 0011 (soit 03 en hexadécimal)
    - d'un bit indiquant la destination du résultat calculé par l'opération (d=0 pour l'accumulateur W, d=1 pour un registre du « file register »)
    - de 7 bits indiquant l'adresse du registre du « file register » concerné, source de la donnée traitée, et aussi destination si d=1.

    Ainsi, pour décrémenter le contenu du registre nommé TOTO (nom déclaré dans le fichier assembleur) correspondant à l'adresse 1A (001 1010 en binaire) :
    - l'instruction assembleur sera « DECF TOTO,f »
    - le code généré sera 00 0011 1001 1010 en binaire (avec OPCODE=00 0011, d=1, f=001 1010), soit 039A en hexadécimal.

    Lors de l'exécution (réalisée en 1 cycle d'horloge interne), le bit Z du registre d'état (STATUS) sera positionné à 1 si le résultat de cette opération donne zéro. Il sera positionné à 0 dans le cas contraire. Les autres bits du registre d'état (le bit de retenue C, notamment) ne seront pas modifiés.

    Tout ceci est parfaitement expliqué dans la datasheet du micro-contrôleur. Il suffit de la lire, particulièrement les chapitres décrivant l'architecture interne (registres, unités de traitement, ...) et le jeu d'instructions.

  4. #4
    invite88c92d74

    Re : Assembleur

    Et si tu veux un très bon complément aux cours de ton prof (si tu es sur PIC), jette un oeil (mais pas trop loin hein...) aux cours de Bigonoff (une simple recherche Google suffira) .

  5. A voir en vidéo sur Futura

Discussions similaires

  1. C et assembleur
    Par inviteac09f73c dans le forum Électronique
    Réponses: 4
    Dernier message: 11/04/2009, 21h03
  2. assembleur
    Par invite3b1bb13d dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 11/04/2009, 07h38
  3. pb assembleur
    Par invite89798d3f dans le forum Électronique
    Réponses: 3
    Dernier message: 24/04/2008, 12h11
  4. C ou assembleur ?
    Par invite3c59dc04 dans le forum Électronique
    Réponses: 3
    Dernier message: 08/03/2006, 21h08
  5. Assembleur
    Par invite62588872 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 18/02/2006, 13h21
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...