L’assembleur (3)
Le jeu d’instructions des AVR
. Par : Christian
Vous répondez à :
C’est expliqué dans la phrase juste au-dessus. Voici l’intégralité de ce qui est écrit :
Son codage en binaire serait 1001 1010 AAAA Abbb (en effet, il faut 5 bits pour coder l’adresse du registre comprise entre 0 et 31 et 3 bits pour coder le numéro du bit à positionner qui est compris entre 0 et 7). Comme DDRB a pour adresse 0x04 (voir datasheet du MCU ATmega328P), notre première instruction SBI DDRB, 5 est alors représentée en binaire par 1001 1010 0010 0101. Cette valeur vaut 9A25 en hexadécimal.
Si vous regardez bien où sont les cinq bits qui codent l’adresse de DDRB, les cinq bits AAAAA sont répartis en AAAA A. Et vous avez raison 0x04 = 0b100. Ce qui donne 0010 0 suivi de 101 qui code le numéro de bit.
Merci d’avoir posté cette question dans cet espace car vous ne serez sans doute pas le seul à vous la poser. C’est qu’il y a beaucoup de notions à intégrer d’un coup.
8 Messages
-
L’assembleur (3) 14 février 2021 21:56, par Calande
Bonjour
Excellents articles, très didactiques. Un monde que je découvre. Un grand merci !
Une question cependant : " DDRB a pour adresse 0x04 ; notre première instruction SBI DDRB, 5 est alors représentée en binaire par 1001 1010 0010 0101 ". Ne serait-ce pas plutôt 1001 1010 0100 0101 ? (0x04 = 0b100). Et 9A25 deviendrait alors 9A45 ?
Bien cordialement
-
L’assembleur (3) 15 février 2021 10:24, par Christian
C’est expliqué dans la phrase juste au-dessus. Voici l’intégralité de ce qui est écrit :
Son codage en binaire serait 1001 1010 AAAA Abbb (en effet, il faut 5 bits pour coder l’adresse du registre comprise entre 0 et 31 et 3 bits pour coder le numéro du bit à positionner qui est compris entre 0 et 7). Comme DDRB a pour adresse 0x04 (voir datasheet du MCU ATmega328P), notre première instruction SBI DDRB, 5 est alors représentée en binaire par 1001 1010 0010 0101. Cette valeur vaut 9A25 en hexadécimal.
Si vous regardez bien où sont les cinq bits qui codent l’adresse de DDRB, les cinq bits AAAAA sont répartis en AAAA A. Et vous avez raison 0x04 = 0b100. Ce qui donne 0010 0 suivi de 101 qui code le numéro de bit.
Merci d’avoir posté cette question dans cet espace car vous ne serez sans doute pas le seul à vous la poser. C’est qu’il y a beaucoup de notions à intégrer d’un coup.-
L’assembleur (3) 15 février 2021 12:07, par Calande
Effectivement ! (Il me faut réapprendre à lire...)
Merci pour votre réponse !
-
L’assembleur (3) 15 février 2021 13:26, par Christian
Lorsqu’un sujet est nouveau, on lit mais on ne mémorise pas forcément l’information car on ne lui donne pas l’importance qu’elle mérite. Vous verrez qu’avec de la pratique, votre cerveau apprendra à retenir de plus en plus de choses et surtout vous irez de vous-même chercher l’information qui vous manque (dans un article, dans une datasheet, dans un tuto, etc.). Donc, il ne faut jamais se décourager : l’assembleur, plus on en fait et plus on est à l’aise.
-
-
-
-
L’assembleur (3) 10 juillet 2021 21:44, par Jean-Pierre NIEPCERON
Bonjour,
Votre cours L’assembleur (1-8) est très agréable a lire car il permet d’appréhender les difficultés que l’on risque de rencontrer avec l’ATmega328 et met sur les rails (sans jeux de mots ) pour tester ce microcontrôleur. Je serais très intéressé par une suite. Mais sur ce cours L’assembleur (3) je me confronte a une difficulté, vous précisez la première boucle tourne 255 fois, moi j’ai l’impression qu’elle tourne 256 fois.-
L’assembleur (3) 13 juillet 2021 19:49, par Christian
Oui, elle tourne 255 fois avec branchement et une fois sans branchement, ce qui fait bien un total de 256 fois. Je pense donc que nous sommes d’accord, si c’est bien de cette boucle que vous parlez...
-
-
L’assembleur (3) 16 novembre 2021 11:33, par luchet
Bonjour
je n’arrive pas a modifier le programme fourni dans ce tuto pour faire clignoter la LED branchée sur la sortie 2 de l’Arduino
Pouvez vous me fournir les instructions a remplacer dans le programme
Merci-
L’assembleur (3) 16 novembre 2021 15:56, par Christian
Il suffit de regarder la figure 4 pour voir que la ligne 2 est reliée au PORT D, bit 2.
Il suffit donc de remplacer ce qui convient dans les instructions sbi et cbi (soit 3 lignes de programme, une pour mettre la ligne en sortie (avec DDRD) et les deux autres pour mettre la led on/off.
-