L'essentiel d'Assembleur

Décrire l'opcode d'une instruction

Testez gratuitement nos 1270 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Mettez en relation le code assembleur et le code binaire associé que seule le cœur du contrôleur est capable de comprendre. C'est aussi grâce à la compréhension de l'opcode que l'on comprend la largeur des bus.
06:03

Transcription

Dans cette vidéo, je vais vous parler de l'opcode et des instructions. En effet, l'opcode est le seul code que le microcontrôleur est capable de comprendre. Une instruction reste quelque chose à l'échelle humaine. En effet, MOVLW, CODE, GOTO et j'en passe, restent des acronymes qui sont accessibles à l'être humain, que travailler directement en hexadécimal ou en binaire ça devient beaucoup, beaucoup plus compliqué. Or, c'est encore ce qui se faisait dans les années 70. Mais heureusement, tout a bien évolué. Alors, maintenant essayons de comprendre pourquoi nous avons une largeur du bus de mémoire programme qui est de 12 bits. Mais simplement parce que notre opcode est sur 12 bits. Donc, une instruction a besoin donc d'un opcode. Ces opcodes sont triés en fonction des trois types d'instructions, c'est-à-dire : les orientées sur un octet, celles qui sont orientées sur un bit de l'octet, et celles qui sont orientées littérales et directement de contrôle qu'on a réunies dans un seul package. Alors, prenons un exemple. Si on utilise l' instruction ADDWF, ceci est l' instruction. Si on regarde son opcode dans le Datasheet nous trouvons cette valeur binaire. Et ici, on veut faire quoi ? On veut additionner W avec le contenu du fichier qui se trouve à l'adresse 10. Pas de problème. Donc, la valeur 10 est donnée ici. Donc en binaire, ça nous donne cela. Et après que veut-on faire ? Est-ce qu'on veut que le résultat soit mis dans le registre de départ ou est-ce que l'on veut qu'il soit mis dans le registre de travail ? Donc là nous aurons un zéro pour le W et un 1 si c'est la variable elle-même. Dans ce cas-là, on écrase son résultat précédent. Prenons encore un autre exemple. Par exemple, si on veut travailler juste sur un seul bit du registre. Dans ce cas-là, on va utiliser par exemple l'instruction BitCF dont le code est ici. L'adresse du registre sur lequel je veux travailler est 10, donc 10. Et je veux travailler sur quel bit ? Sur le bit numéro deux. OK, le bit numéro deux. Alors, en sachant qu'ici, nous comptons en binaire. Donc, ça nous fait 1, 2, 3, 4, (4 + 1), 5, (5+1), 6, ainsi de suite. Donc, on va bien de 0 à 7 avec ces trois bits là. Donc, tout va bien. Et puis après, nous avons des instructions dites littérales. Où là, dans ce cas-là, on fait ANDLW, on fait un ET logique. Donc, son opcode c'est celui-ci. Et puis on met directement la valeur. En hexadécimal ici c'est 16. Donc, en binaire ça nous donne ceci. Et nous avons en fait les instructions de saut. Par exemple, ici, l'opcode pour un GOTO. Alors GOTO et puis le label qui se trouvera par exemple à l'adresse CA. Donc, CA en binaire, ça nous donne ceci. Le GOTO, il est caractérisé par 101. OK, Impeccable! Alors, à partir de là il faut absolument qu'ici l'adresse soit la plus grande que l'on puisse coder sur tout le plan mémoire. Alors ici par exemple, on a un bus qui est de 9 bits, c'est-à-dire que l'on est capable de compter de 2 puissance 9 -1 donc de 0 à 511. Donc 0x1FF. C'est pour ça que vous retrouvez cela dans le Datasheet. Et puis, en plus lorsque vous faites un saut, eh bien, il faut pouvoir revenir là où vous en étiez. Donc pour cela, on va aller stocker dans la pile l'adresse qui a été mise en mémoire dans la pile. Le traitement par l'unité arithmétique et logique. Eh bien, prenons un exemple avec le décodeur d'instructions : faisons ANDLW50. C'est-à-dire que je mets la valeur 50 avec W. Donc en littéral, j'obtiens 50. L'opcode c'est celui-ci. Et puis je fait un ET bit à bit. Donc, 1 et 0 ça me fait 0. 0 ET 0 ça me fait 0. 1 et 1, ça nous fait 1. Et donc, on obtient ce résultat. Ce qui nous vaut un 18, que l'on va mettre forcément dans W. Çà c'est 18 en version binaire. Et donc on affecte potentiellement le registre de statut. Et puis, passons à un dernier exemple. Donc, le décodeur d'instructions ou par exemple là où on fait un ADDWF. Donc, l'opcode de ADDWF c'est celui-ci. La destination, eh bien, reste à savoir. Donc, on mettra soit la destination donc, D à 0, soit D à 1. Mais en fait, vous ne mettez pas le D à 0 ou à 1. C'est lorsque vous avez passé le paramètre W ou rien du tout, c'est-à-dire F par défaut, pour le résultat ; donc, 150. Je vais aller chercher l'adresse 10 qui contient la valeur 45. Donc je fais 150 + 45, ça me fait 195. Et après, en fonction du paramètre suivant, je placerai ça sur W ou sur F.

L'essentiel d'Assembleur

Plongez-vous dans le langage bas niveau, nommé Assembleur. Abordez les notions de jeu d'instructions, de pipeline, de registres, de mode d’adressage, de compteur de programme, etc.

4h52 (57 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :26 sept. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !