Constantes, nombres, identificateurs

"APC" représente le PC de l'assembleur au début de la ligne d'instructions d'assembleur qui est assemblée actuellement. Jump APC est une instruction qui bloque le processeur jusqu'au prochain reset. Avec le PIC, Jump APC+2 par exemple, peut être utilisé sans danger car toutes les instructions ont la même longueur.

unsigned constant: quatre types de constantes non-signées sont reconnues:
2',8',10',16' sont suivis du nombre défini dans la base respective. Par exemple 16'FF

nombre défini dans la base actuelle. Si la base est supérieure à 10'10 le nombre doit commencer par un zéro. Par exemple: 0DD (base actuelle est 10'16)

"caractère" est égal au code du caractère graphique donné

deux identificateurs sont reconnus:

symbole: Le symbole doit commencer par un caractère parmi ["?","_","A".."Z"] et peut être suivi par des caractères parmi ["?","_","A".."Z","0".."9"]. Les noms des registres du processeur ne peuvent pas être utilisés (ils sont identifiés d'abord)

adresses locales: Une adresse locale est suivie par le signe $; les adresses locales sont valides entre deux adresses symboliques.

les majuscules sont identifiées avec les majuscules.

Expressions arithmétiques

Une expression comporte des termes reliés par des opérateurs, et chaque terme peut comporter plusieurs facteurs reliés par d'autres opérateurs. Par exemple dans l'expression "3+5*2*exp-toto", 3, 5*2**ext, toto sont des termes, 5, 2, exp sont des facteurs. Les principales règles d'évaluation de priorité d'opération sont les suivantes\lla;

- En l'absence de parenthèses les operateurs *, /, .MOD., .AND. et ** sont traités avant les opérations +, -, .OR. et .XOR.
- En cas d'égalité de priorité, l'évaluation se fait de gauche à droite
- S'il y a des parenthèses, elles sont effectuées en premier.

Tous les opérateurs travaillent sur des nombres signés (integer) et le résultat est aussi un nombre signé (sauf pour les opérateurs de comparaison).

Les opérateurs de comparaison sont .EQ., .LT., .GT., .NE., .LE. et .GE.. Le résultat est similaire au PASCAL, c.à.d. un résultat booléen avec TRUE = -1 (tous les bits à 1) et FALSE = 0. Les deux expressions à comparer peuvent être quelconques, signées. Ces opérateurs ont la priorité la plus faible.

Les opérateurs de "terme" sont +, -, .OR. et .XOR.

Les opérateurs de "facteur" sont *, /, .MOD., .AND., **, .ASR., .SL. et .SR.. L'opérateur ".MOD." fournit une opération modulo, c.à.d. le reste de l'opération "/" (p.ex. 3.MOD.2 = 1). L'opérateur "**" effectue l'exponentiation. Si l'exposant est négatif le résultat vaut zéro

Les opérateurs de plus haute priorité (donc exécutés en premier) sont les parenthèses et l'opérateur .NOT. (complément à 1). Les opérateurs .AND., .OR., .XOR., .ASR., .SL., .SR. et .NOT. considèrent les opérandes comme des nombres logiques et livrent un résultat correspondant.