Document fait avec Nvu Document made with Nvu




Assembleur PIC et dsPIC 16 bits

Instructions
Utilisation
Exemple

Principe

L'assembleur est un compilateur qui permet d'écrire un programme en utilisant les instructions spécifiques du microprocesseur servant de coeur à l'ordinateur. L'assembleur est indispensable à l'écriture des instructions de base des langages de haut niveau (FORTH, Pascal, C, ...) qui sont eux-mêmes ainsi indépendants de la plate-forme utilisée. Pour parler plus technique, les langages de haut niveau sont portables alors que l'assembleur ne l'est pas (à moins de réaliser un logiciel de simulation...).

Le but de cette page n'est pas de recenser toutes les instructions des processeurs 16 bits PIC et dsPIC ni d'en donner un manuel d'utilisation. Tout ceci est disponible sur le site du constructeur MICROCHIP.

Par contre, le contenu de cette page permettra aux développeurs les plus avertis de réaliser leur propres programmes en assembleur dans l'environnement du micro système.


Instructions

- RAZ_ASSEMBLEUR -

Permet de ré initialiser la table des étiquettes

- ASSEMBLEUR -

Assemblage du texte qui suit cette instruction jusqu'à la directive "END"

- [>" chemin/nom" -

Permet de générer un fichier source assemblé pour le micro système FORTH.

- FORGET_ASSEMBLEUR -

Permet de retirer l'ensemble des instructions dédiées à l'assembleur du vocabulaire.


Utilisation

L'assembleur du micro système, uniquement utilisable avec le Coeur FORTH, est un véritable assembleur 2 passes gérant une table d'étiquettes. Comme indiqué dans la rubrique correspondante, il ne comporte que 4 instructions FORTH:

  • RAZ_ASSEMBLEUR efface la table des étiquettes. Cet effacement est automatiquement réalisé à l'installation du logiciel. Il ne faut pas omettre l'exécution de cette instruction au début du code source car, en cas de ré assemblage, il évitera l'apparition du message "Etiquette déjà déclarée".
  • ASSEMBLEUR fait passer l'interpréteur FORTH en assembleur. A partir de cette instruction, la syntaxe des lignes suivantes doit suivre celle de l'assembleur jusqu'à l'apparition de la directive "END" qui indique à l'assembleur de retourner en mode interprétation FORTH à l'issue de la deuxième passe.
  • [>" permet de générer un fichier source assemblé pour le micro système FORTH pour enrichir son vocabulaire temps réel.
  • FORGET_ASSEMBLEUR libère la mémoire occupée par l'assembleur lorsque celui-ci n'est plus utile. Les 4 instructions FORTH liées à l'assembleur disparaîtront du vocabulaire en même temps que la libération de l'espace mémoire occupé.

Les étiquettes doivent impérativement commencer par une lettre majuscule. Les caractères suivants peuvent être des lettres majuscules, des chiffres ou un caractère "_". Aucune étiquette ne doit commencer par les mêmes lettres que les registres des processeurs.

  • Registres PIC24x: W0 (ou WREG), W1, W2, W3, W4, W5, W6, W7, W8, W9, W10, W11, W12, W13, W14 (ou WFP), W15 (ou WSP), PC, SR,TBLPAG,PSVPAG.
  • Registres supplémentaires dsPIC3x: A,B.
  • Registres supplémentaires PIC24E et dsPIC33E: DSRPAG et DSWPAG au lieu de PSVPAG.

Les registres des PIC et dsPIC du micro système FORTH sont utilisés de la manière suivante:

  • W0 (ou WREG) constitue le sommet de la pile des données,
  • W15 (ou WSP) constitue le pointeur de la pile de retour,
  • W14 (ou WFP) constitue le pointeur de la pile des données (il pointe donc le 2ième élément),
  • Les autres registres sont libres.

Les instructions doivent être écrites en lettres majuscules. La syntaxe est la même que celle de MICROCHIP. Les modes d'adressages sont les suivants:

  • PIC: Wn; [Wn]; [Wn--]; [Wn++]; [--Wn]; [++Wn]; [Wn+Wm]; [Wn+lit]; f; #lit; #bit; Expr; rPAG.
  • Suppléments dsPIC: Acc; Wn*Wn; Wn*Wm; [Wn+=d]; [Wn-=d].
Il existe une directive d'assemblage permettant de filtrer les instructions en fonction du coeur choisi:
  • PIC24F ou PIC24H (coeur par défaut),
  • PIC24E,
  • DSPIC30F ou dsPIC33F,
  • DSPIC33E.

Exemple

Pour illustrer cette présentation, rien ne vaut un bon exemple. Celui-ci est disponible sous forme de fichier texte: sqrt_source.txt.

Il s'agit d'une instruction FORTH permettant l'extraction de la racine carrée d'un nombre entier non signé de 16 bits (SQRT) et de 32 bits (DSQRT).

Le résultat est le fichier sqrt.txt pouvant être téléchargé dans le micro système FORTH via son lien de communication.