1
Epsitec SA Didel SA
Dauphin 2
e
partie
Analyse du répertoire d’instruction du Psi30 et exemples
Les notations sont celles du langage CALM défini au LAMI dès 1975 pour éviter de se perdre
dans la multiplicité des notations cabalistiques définies par chaque fabricant.
Rappelons que les instructions agissent sur des opérandes qui peuvent être
- une valeur, dite valeur immédiate, car elle est immédiatement disponible dans
l’instruction : Move #H’2C,A ;
- un registre (A,B,X,Y,F), dont le contenu est lu ou mis à jour : Move #H’2C,A ;
- une position mémoire ou un périphérique (ADDR), analogue à un registre : Move A,H’C00;
- un pointeur, ou valeur indirecte, c’est-à-dire que dans le registre indiqué on trouve un
nombre qui est l’adresse ou un déplacement à ajouter à l’adresse : Move Table+{X},B.
Le Psi30 a un joli répertoire d’instructions très « orthogonal », en général chaque instruction
accepte tous les modes d’adressage.
Mais avant de passer en revue les instructions, mettons nous bien dans la tête que tout
commence pas un codage de l’information.
Signification d’un mot binaire
Le processeur travaille sur des mots binaires sans savoir ce qu’ils représentent. Si le
programmeur écrit Move #2’00111001,W il peut avoir des intentions très différentes :
Il veut afficher le chiffre 4 sur un affichage 7 segments et la
prochaine instruction sera un transfert sur le registre de sortie
qui commande l’affichage. Les bits sont numérotés de 0 à 7.
A noter qu’un bon programmeur aurait déclaré
Quatre = 2’00111001 et écrit
Move #Quatre,W
Il veut préparer la valeur 83 dans un décompteur pour attendre
par exemple 83 fois une seconde. Il aurait du écrire
Move #83,W l’assembleur aurait traduit en binaire. Avec les
poids binaire, on peut faire la conversion dans les deux sens :
de 83, on ne peut pas extraire 128, on extrait 64, il reste 19, on
ne peut pas extraire 32, on extrait 16, etc.
A droite on a les bits de poids faible, et à gauche les bits de
poids forts.
Il veut calculer en décimal codé binaire (BCD) avec deux
groupes de 4 bits pour les chiffres de 0 à 9. Il devrait donc
écrire de préférence
Move #16’53,W car le BCD se code comme
l’hexadécimal, mais en n’utilisant que les chiffres de 0 à 9.
Il veut préparer la lettre S pour l’envoyer via une ligne série et
il utilise le code ASCII. Ce code représente les lettres, les
chiffres et les signes et il est connu de l’assembleur. Il faudrait
donc écrire Move # "S",W
Déplacements et opérations arithmétiques
Chaque instruction a un nom qui exprime l’opération effectuée, suivi de l’opérande source et
l’opérande destination. Cette notion de source-destination est évidente avec l’instruction Move. Le
contenu de la source (un registre, une position mémoire ou périphérique, une valeur) et copié
dans la destination (un registre, une position mémoire ou périphérique).