Utiliser les PIC 16F et 18F/Exercices/Arithmétique et assembleur

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Arithmétique et assembleur
Image logo représentative de la faculté
Exercices no2
Leçon : Utiliser les PIC 16F et 18F
Chapitre du cours : Arithmétique et assembleur

Exercices de niveau 15.

Exo préc. :Architecture du 16F84
Exo suiv. :Les structures de contrôle et l'Arithmétique
En raison de limitations techniques, la typographie souhaitable du titre, « Exercice : Arithmétique et assembleur
Utiliser les PIC 16F et 18F/Exercices/Arithmétique et assembleur
 », n'a pu être restituée correctement ci-dessus.




Exercice 1[modifier | modifier le wikicode]

Relisez l’article sur le système binaire pour commencer.

  1. Convertissez les nombres décimaux suivants en binaire (en représentation en complément à deux sur 8 bits) :
    • +11
    • -11
    • -23.
  2. Ensuite convertissez ces nombres en hexadécimal.
  3. Convertissez les nombres binaires suivants en décimal :
    • 111011
    • 11010101.
  4. Réaliser ensuite les soustractions suivantes en utilisant (i) la technique de soustraction normale ; (ii) une addition du complément à deux
    • 11011 - 10101
    • 11100 - 1001

Exercice 2[modifier | modifier le wikicode]

(données en hexadécimal)

La directive utilisée pour réserver la mémoire RAM dans cet exercice est

CBLOCK 0x0C ; début de la zone variables en ACCESS RAM
		data1 :1  ; zone de 1 byte
		data2 :1 ; le resultat sera ici
ENDC ; Fin de la zone

On donne l'état (connaissance partielle : on ne connaît pas tout, mais c’est suffisant) suivant :

État partiel d'un PIC 16F, son compteur ordinal, quelques drapeaux du registre STATUS, sa mémoire programme et sa mémoire RAM
  1. D'après le schéma donné ci-dessus, désassembler la partie utile du code à l'aide des tableaux d'instructions du TD1 et TD2.
  2. Exécuter ensuite les instructions que vous pouvez et donner les états successifs.

Exercice 3[modifier | modifier le wikicode]

Écrire un programme qui additionne deux valeurs en RAM ("donnee1" et "donnee2") et met le résultat dans une variable 8 bits "somme".