Vous êtes sur la page 1sur 48

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Sommaire
1

Introduction ......................................................................................... 3
1.1

Le vritable Dauphin ........................................................................ 3

1.2

Le simulateur de Dauphin ................................................................. 4

Binaire et hexadcimal .......................................................................... 6

Pour ne pas perdre la mmoire ............................................................... 8

Une mmoire de Dauphin .................................................................... 10

4.1

Les priphriques .......................................................................... 12

4.2

Laffichage .................................................................................... 13

4.3

Lcran bitmap .............................................................................. 15

4.4

Le clavier ..................................................................................... 16

4.5

La mmoire morte ......................................................................... 17

Le processeur ..................................................................................... 18
5.1

Tout de suite ? .............................................................................. 20

5.2

Dans les entrailles ......................................................................... 21

5.3

Le saut ........................................................................................ 22

5.4

Premier saut dans linconnu ............................................................ 22

5.5

Mouvement perptuel .................................................................... 24

5.6

Laddition sil vous plait .................................................................. 25

5.7

Silence, on tourne ......................................................................... 26

5.8

Sauter ou ne pas sauter, telle est la question ................................... 27

5.9

Lecture du clavier .......................................................................... 28

5.10 Routines en mmoire morte ........................................................... 31


5.11 Codage manuel ou automatique ...................................................... 32
5.12 Bonjour........................................................................................ 35
5.13 Lassembleur dinstructions ............................................................. 37
5.14 Encore des rebonds ....................................................................... 39
5.15 La pile ......................................................................................... 42
6

A laide .............................................................................................. 44

Cest mga......................................................................................... 44

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

1 Introduction
A la prhistoire de linformatique, il y a un peu plus de 30 ans, les ordinateurs
taient de grosses machines boutonneuses. Loprateur rglait le monstre
laide dune ribambelle de boutons, et lordinateur communiquait avec
dimpressionnantes ranges de lumires clignotantes.

1.1 Le vritable Dauphin


En 1971, une invention rvolutionne lindustrie des gros ordinateurs; Intel
russit graver le premier microprocesseur sur une petite plaquette de silicium.
Cest le dbut de lre des microprocesseurs, qui ne vont cesser de se
perfectionner.
En 1977, le professeur Jean-Daniel Nicoud cre le Dauphin, un gnial petit
ordinateur livr en kit, quil fallait construire soi-mme. Cette sympathique
machine a rencontr un grand succs en Suisse romande, permettant de
nombreux passionns de sinitier cette nouvelle discipline.

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

1.2 Le simulateur de Dauphin


Le simulateur de Dauphin est un logiciel qui fonctionne sur la plupart des PC
rcents quips de Windows Vista, XP ou 2000. Vous pouvez le tlcharger
gratuitement ladresse www.epsitec.ch/dauphin.
Avec ce simulateur, vous vous trouvez face un ordinateur rudimentaire, vierge
de tout logiciel, qui ne sait strictement rien faire, exactement comme lpoque
des pionniers de linformatique. Cest vous qui lui donnez toutes les instructions
quil doit excuter. Mme les tches les plus simples telles quafficher la valeur
correspondant la touche presse doivent tre programmes. Vous acquerrez
ainsi les bases de la programmation en langage machine , une chose presque
totalement oublie de nos jours.
Bien que le Dauphin soit infiniment moins puissant quun ordinateur actuel, tous
les principes que vous apprendrez ici restent valables avec linformatique
moderne. Nous sommes persuads que vous comprendrez mieux comment
fonctionne votre PC, la lecture de ce manuel.

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Nous nous efforcerons dutiliser les termes techniques franais, en mentionnant


leurs quivalents anglais entre parenthses et en italique.
Aprs avoir install et excut le logiciel, lcran ressemble ceci :

1. Icnes pour effacer, ouvrir ou enregistrer un programme.


2. Choix des panneaux affichs en dessous. [BUS] affiche les bus dadresse
et de donnes.
3. Bouton principal [RUN/STOP] pour dmarrer ou arrter le processeur.
4. Choix de la vitesse du processeur, en nombre dinstructions par secondes.
5. Commutateur [CONT STEP] pour choisir le mode continu ou pas pas
(step by step).
6. Commentaires sur le programme ouvert.
7. Rsum des instructions du microprocesseur.
8. Clavier et affichage du Dauphin, activs par des accs bus et certaines
instructions.

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

2 Binaire et hexadcimal
Un ordinateur moderne est compos de plusieurs milliards de transistors, qui ont
la particularit de fonctionner en tout ou rien . Un transistor conduit
llectricit ou ne la conduit pas. Linformation vhicule par un fil peut donc
prendre deux tats : 0 ou 1. On parle de systme binaire.
Linformation la plus petite gre par un ordinateur est le bit, qui peut prendre
les tats 0 ou 1. Un bit permet de reprsenter deux valeurs. Par exemple, on
pourrait utiliser un bit pour dterminer si un personnage est vert ou rouge. Si le
bit est zro, le personnage est vert, et sil est un, il est rouge :
0 Vert
1 Rouge

Il est facile de comprendre que deux bits permettent de reprsenter quatre


valeurs :
00
01
10
11

Trfle
Carreau
Pique
Cur

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Si on ajoute un troisime bit, on pourra reprsenter huit valeurs. Par exemple,


trois bits permettraient de dterminer un jour de la semaine, la huitime valeur
tant ici inutilise :
000
001
010
011
100
101
110
111

Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi
Dimanche
Inutilis

En fait, lajout dun bit double chaque fois le nombre de valeurs possibles. Avec
seulement huit bits, on arrive dj reprsenter 256 valeurs, ce qui est suffisant
pour dfinir un caractre (lettre minuscule ou majuscule, chiffre, signe de
ponctuation, etc.). En informatique, un ensemble de huit bits est appel un octet
(byte). Cest une grandeur souvent utilise.
La notation binaire nest pas pratique, car on crit de longues suites de 0 et de 1.
Par exemple, le nombre 250 scrit 11111010. On prfre une notation
condense appele hexadcimal. Les bits y sont regroups par quatre. Un groupe
de quatre bits permet de reprsenter 16 valeurs. On utilise les chiffres 0 9 pour
les dix premires, puis les lettres A F pour les six dernires :
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

Par exemple, le nombre dcimal 250 (quivalent binaire de 1111 1010) scrit FA
en hexadcimal. Le nombre dcimal 19 (quivalent binaire de 0001 0011) scrit
13 en hexadcimal. Afin dviter les confusions, on prcde gnralement un
nombre dcimal de D et un nombre hexadcimal de H . Donc, le nombre
dcimal D19 scrit H13 en hexadcimal. Si rien nest prcis, il sagit dun
nombre dcimal.

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

3 Pour ne pas perdre la mmoire


La mmoire dun ordinateur est un composant essentiel. Cest l que sont
stocks les donnes et les programmes. Aussi grande et complexe que soit la
mmoire dun ordinateur, on ny effectue que deux oprations lmentaires,
crire ou lire :

Ecrire (write) consiste mettre une valeur dans la mmoire.


Lire (read) consiste retrouver une valeur prcdemment crite.

Prenons par exemple une mmoire de 32 bits. Les mmoires sont souvent
regroupes en octets. Notre mmoire sera donc compose de 4 octets (4 octets
de 8 bits chacun, ce qui donne bien 4x8 = 32 bits).

On peut considrer cette mmoire comme une commode ayant 4 tiroirs. Les
tiroirs sont numrots de 0 3, et chaque tiroir contient 8 bits.
Note :

En informatique, il est usuel de commencer numroter partir de


zro, ce qui peut tre troublant !

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Dans la figure ci-dessous, le tiroir numro 1 (donc le deuxime depuis le haut)


contient la valeur binaire 00100110, cest--dire H26 en hexadcimal :

Pour crire un octet, il faut donner deux informations : la valeur crire et le


numro du tiroir. La valeur crire est appele donne (data) et le numro du
tiroir est appel adresse (address).
Physiquement, notre mmoire de 32 bits serait relie au monde extrieur par 8
connections pour les donnes et 2 connections pour les adresses 0 3. Un
ensemble de connexions est appel bus. La mmoire est donc accde avec un
bus dadresse et un bus de donnes.

Deux fils supplmentaires, appels Ecrit et Lit dans la figure ci-dessus,


permettent dagir sur la mmoire.

Une impulsion sur le premier fil crit la valeur prsente sur le bus de
donnes dans le tiroir dsign par le bus dadresse.
Une impulsion sur le deuxime fil place le contenu du tiroir choisi par le
bus dadresse sur le bus de donnes; on lit la mmoire.

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

4 Une mmoire de Dauphin


Pour bien comprendre ces notions, rien de tel quun exercice pratique avec le
simulateur de Dauphin. La mmoire du Dauphin est bien plus grande que la
mmoire de 32 bits 4 tiroirs vue plus haut. Elle comporte 2'048 tiroirs (soit un
total de 16'384 bits), slectionns grce un bus dadresse de 11 bits.
Pourtant, cette mmoire est ridiculement petite face aux mmoires des
ordinateurs actuels, qui atteignent facilement un milliard doctets (autrement dit
mille millions ou 1'000'000'000) !

Ecrivons la valeur H17 ladresse H0D2, laide du panneau de contrle :


1. Slectionnez ladresse H0D2 (0000 1101 0010) avec les interrupteurs du
bus dadresse. Les petites lampes et les trois afficheurs montrent cette
valeur.
2. Slectionnez la donne H17 (0001 0111) avec les interrupteurs du bus de
donnes. Les petites lampes et les deux afficheurs continuent de montrer
H00; cest normal, les donnes ne sont pas encore sur le bus.
3. Pressez sur le bouton poussoir [W] (write = crire) en bas gauche.
Pendant que le bouton est maintenu press, les petites lampes et les deux
afficheurs montrent la valeur H17.

10

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Ecrivons la valeur H25 ladresse H0D3 :


1. Slectionnez ladresse H0D3 (0000 1101 0011) avec les interrupteurs du
bus dadresse. Il suffit de bouger linterrupteur du bit 0, tout droite.
2. Slectionnez la donne H25 (0010 0101) avec les interrupteurs du bus de
donnes.
3. Pressez sur le bouton poussoir [W] en bas gauche.
Lisons la premire valeur stocke ladresse H0D2 :
1. Slectionnez nouveau ladresse H0D2 (0000 1101 0010).
2. Pressez sur le bouton poussoir [R] (read = lire). Tant quil est maintenu
press, on peut lire la valeur 17 sur le bus de donnes. Vous pouvez
presser [R] autant de fois que vous le dsirez, pour lire la valeur, qui ne
changera pas tant que vous ncrirez pas une autre valeur.

Lisons la valeur stocke ladresse H0D3 :


1. Slectionnez ladresse H0D3 (0000 1101 0011).
2. Pressez sur le bouton poussoir [R]. Tant quil est maintenu press, on peut
lire la valeur H25 sur le bus de donnes.

11

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

4.1 Les priphriques


Pour interagir avec un ordinateur moderne, vous utilisez principalement un
clavier, une souris et un cran. Ce sont des priphriques. Le clavier et la souris
sont les moyens dont dispose lutilisateur pour dire lordinateur ce quil doit
faire (utilisateur ordinateur). Lcran est le moyen dont dispose lordinateur
pour communiquer avec lutilisateur (ordinateur utilisateur).

Le Dauphin dispose de trois priphriques rudimentaires pour dialoguer avec


lutilisateur :

12

Un clavier de dix [NUM] ou quatre [ARR] touches (utilisateur Dauphin).


Un affichage de quatre valeurs (Dauphin utilisateur).
Un cran bitmap [DISPLAY] de 32 x 24 points (Dauphin utilisateur).

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Ces priphriques sont dans le panneau infrieur droite du simulateur. Si vous


cliquez sur les touches, il ne se passe rien; laffichage reste dsesprment
muet. Cest tout fait normal. Au stade actuel, aucun programme ne fonctionne.
Ces priphriques sont donc inactifs.
Peut-tre aurez-vous remarqu que le dernier interrupteur (bit 11) du bus
dadresse semble inutile, puisque la mmoire rpond aux adresses H000 H7FF
(0111 1111 1111 en binaire). En fait, il a bien une utilit prcise : laccs la
mmoire morte et aux priphriques.
Adresses
H000.. H7FF
H800.. HBFF
HC00.. HC0F
HC80.. HCDF

Contenu
Mmoire vive
Mmoire morte
Priphriques
Ecran bitmap

Abrviation
RAM
ROM
PER
DIS

Signification
Random access memory
Read only memory
Display

Lorsque nous utilisons les bus pour crire une adresse comprise entre H000 et
H7FF, nous accdons la mmoire vive (RAM). Pour interagir avec un
priphrique, il suffit dutiliser une adresse comprise entre HC00 et HC0F. Cest
aussi simple que cela.

4.2 Laffichage
1. Slectionnez ladresse HC00 (1100 0000 0000) avec les interrupteurs du
bus dadresse.
2. Slectionnez la donne H07 (0000 0111) avec les interrupteurs du bus de
donnes.
3. Pressez sur le bouton poussoir [W] (write = crire) en bas gauche. Une
sorte de J apparat sur lafficheur de gauche.

13

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

En fait, chaque bit du bus de donnes correspond un segment de lafficheur. Il


est ainsi possible dafficher toutes sortes de combinaisons tranges qui ne
ressemblent rien. Les autres afficheurs sont accessibles avec les adresses
HC01, HC02 et HC03 :

Exprimentez ceci avec diffrentes adresses et diffrentes donnes, en appuyant


chaque fois sur [W]. Vous pouvez ainsi afficher vraiment nimporte quoi :

14

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

4.3 Lcran bitmap


Lcran bitmap est lanctre des crans vido daujourdhui. Il permet dafficher
32 x 24 points (pixels) monochromes. Pour voir lcran bitmap, cliquez sur le
bouton [DISPLAY]. Les quatre afficheurs sept segments sont alors rduits,
mais ils sont toujours fonctionnels. Le bouton [CLS] (CLear Screen) efface
lcran, si ncessaire. Le bouton [LCD] (Liquid Crystal Display) change la
technologie de lcran simul. [CRT] (Cathode Ray Tube) revient une
simulation de tube cathodique.

Les adresses HC80 HCDF permettent daccder aux 32 x 24 = 768 points de


lcran. Chaque point correspond un bit. Un octet donne donc accs huit
points. La premire adresse HC80 (1100 1000 0000) correspond la ligne
horizontale de huit points tout en haut gauche. La deuxime adresse HC81
correspond aux huit points sur la droite. Pour trouver loctet en dessous dun
autre, il faut ajouter quatre ladresse. Dans une ligne horizontale de huit
points, le bit 7 correspond au point de gauche, et le bit 0 celui de droite.

15

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Le panneau de contrle permet de samuser allumer des points dans lcran.


Pour dessiner un petit carr en haut gauche, crivez les donnes suivantes, en
appuyant chaque fois sur [W] :
Adresse
HC80 (1100 1000 0000)
HC84 (1100 1000 0100)
HC88 (1100 1000 1000)
HC8C (1100 1000 1100)

Donne
HF0 (1111 0000)
H90 (1001 0000)
H90 (1001 0000)
HF0 (1111 0000)

Dessinez dautres motifs simples pour bien comprendre le systme dadressage


des points.

4.4 Le clavier
Le clavier correspond ladresse HC07 (1100 0000 0111). Cela na aucun sens
(et aucun effet) dcrire une donne cette adresse. On lutilise uniquement en
lecture.
1. Slectionnez ladresse HC07 (1100 0000 0111) avec les interrupteurs du
bus dadresse.
2. Cliquez sur la touche [6] du clavier dans le panneau infrieur droite.
3. Pressez sur le bouton poussoir [R] (read = lire) en bas gauche. La valeur
H86 (1000 0110) apparat tant que le bouton est maintenu press. Une
deuxime pression sur [R] affiche H06. Etrange, non ?
Lorsquune touche [0] [7] est clique, le bit 7 (valeur H80 ou 1000 000 en
binaire) est mis un ladresse HC07. Si la touche est relche avant que
quelquun ne lise cette adresse, elle y reste mmorise. Ds que ladresse HC07
est lue, le bit 7 est remis zro. Cette astuce est ncessaire pour viter de

16

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

perdre une touche presse brivement, si on tarde lire ladresse HC07, et


galement pour viter de lire deux fois la mme touche.
Les touches [Shift] et [Ctrl] correspondent aux bits 3 et 4. Elles ne sont pas
mmorises et nactivent pas le bit 7. Un clic de la souris enfonce lune de ces
touches (fond rouge). Un nouveau clic la relche. Pour vous faciliter la vie, la
valeur lue ladresse HC07 est affiche entre parenthses lorsque lune de ces
touches est enfonce.
Le bouton [ARR] transforme le clavier en quatre flches, trs utiles dans certains
jeux. Les touches flches correspondent aux bits 3 6. Elles ne sont pas
mmorises et nactivent pas le bit 7.

4.5 La mmoire morte


La mmoire morte (ROM = read only memory) rpond aux adresses H800
HBFF. On peut y lire des donnes prinscrites, mais pas les modifier. En dautres
termes, ou peut lire (read) des donnes ces adresses, mais pas les crire
(write). Lutilit de la mmoire ROM sera aborde plus loin (voir chapitre 5.10).

La petite manipulation ci-dessous tente dcrire une valeur en mmoire ROM :


1. Slectionnez ladresse H800 (1000 0000 0000) avec les interrupteurs du
bus dadresse.
2. Slectionnez la donne H38 (0011 1000) avec les interrupteurs du bus de
donnes.
3. Pressez sur le bouton poussoir [W] (write = crire) en bas gauche. La
valeur H03 (0000 0011), diffrente de celle que vous tentez dcrire,
apparat tant que le bouton est maintenu press. Cette valeur correspond
au contenu de la ROM, que vous ne pouvez pas modifier.

17

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

5 Le processeur
Le processeur tudi dans ce manuel nexiste pas dans la ralit. Il sagit dun
processeur didactique baptis PSI30.
Au chapitre prcdent, nous avons accd la mmoire avec le panneau de
contrle. Cest lui qui a pris le contrle des bus dadresse et de donnes. Pendant
ces oprations, le processeur tait arrt. Mais lorsque lordinateur fonctionne,
cest le processeur qui prend le contrle des bus.

Le processeur est une sorte dautomate sophistiqu.

18

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Heureusement, il est ais den comprendre le principe. Lidal est de le mettre au


travail immdiatement, et dobserver son comportement :
1. Cliquez sur licne
Nouveau , tout en haut gauche, puis rpondez
Non , si ncessaire, pour ne pas enregistrer le programme. Cela efface
la mmoire, qui ne contient alors plus que des zros.
2. Si ce nest pas dj fait, basculez le commutateur [CONT STEP] sur
CONT (continuous).
3. Enfoncez le bouton [10], pour que le processeur ne travaille pas trop vite.
Ce bouton signifie que le processeur excutera 10 instructions par
seconde.
4. Cliquez le bouton [RUN]. Le bus dadresse se met compter (H001,
H002, H003, H004, etc.) et le bus de donnes ne bouge pas (H00).
5. Aprs avoir observ ce comportement, cliquez le bouton [STOP] pour
stopper le processeur.

Que sest-il pass ? Il vaut la peine de comprendre ce comportement dans le


dtail :
1. Lorsque le bouton [RUN] est enfonc, le processeur dmarre. Il prend le
contrle des bus dadresse et de donnes, pour lire le contenu de la
mmoire ladresse H000. Cest toujours la premire tche effectue au
dmarrage du processeur.
2. Linformation quil lit est appele instruction. Actuellement, tous les bits de
la mmoire sont zro. Le processeur PSI30 lit donc linstruction H00, qui

19

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

est un peu spciale. Cette instruction sappelle NOP (no operation) et


elle signifie rien de spcial faire .
3. Le processeur lit alors linstruction suivante, ladresse H001. Il y trouve
la mme instruction NOP , et continue donc de parcourir toute la
mmoire squentiellement aux adresses H002, H003, H004, etc.
Bien entendu, ce comportement basique na quun intrt didactique. Mais
retenez le principe de base dun processeur :
1. Lire une instruction en mmoire.
2. Excuter linstruction et passer ladresse suivante.
3. Recommencer linfini.
La programmation consiste remplir la mmoire avec des instructions plus
complexes que les NOP initiaux. Ce sont ces instructions que le processeur va
suivre la lettre, et qui vont dterminer les tches effectues par le programme.

5.1 Tout de suite ?


On remarque quun processeur effectue les instructions les unes aprs les autres.
Il est incapable deffectuer deux choses en mme temps. Pour sen convaincre,
effectuez les manipulations suivantes :
1. Cliquez sur licne
Ouvrir en haut gauche, et slectionnez le
programme 2008.dolphin .
2. Cliquez sur le bouton [RUN] pour dmarrer le programme.
Ce programme trs simple affiche 2008 , la frquence de 100 instructions
par seconde, puis stoppe. On voit nettement que les quatre chiffres
napparaissent pas instantanment, mais de droite gauche : 8, 0, 0 puis
finalement 2. Et pourtant, 100 instructions par seconde semblent dj une belle
vitesse. Cela vous donne une ide de la complexit requise pour effectuer une
opration apparemment aussi simple que dafficher un nombre de quatre
chiffres.

20

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Il peut sembler invraisemblable quun ordinateur moderne, qui gnre des


images en trois dimensions poustouflantes et qui corrige vos fautes de frappe,
effectue toutes ces tches uniquement laide dinstructions rudimentaires. Cest
pourtant bien ainsi que fonctionnent tous les ordinateurs. Le secret vient de la
trs grande quantit dinstructions effectues chaque seconde : plus de
1'000'000'000 (un milliard, soit mille millions) na rien dexceptionnel
aujourdhui !

5.2 Dans les entrailles

Pour la suite des exercices, cliquez sur le bouton [CPU+MEM]. Ceci modifie les
panneaux de contrle, qui montrent maintenant lintrieur des deux composants
principaux dun ordinateur : le processeur (Central Processing Unit) et la
mmoire. Il y a 30 ans, cela ntait hlas pas possible raliser avec un vritable
Dauphin !

Le panneau du processeur PSI30 montre que ce dernier possde sept registres


(nomms PC, SP, F, A, B, X et Y). Certains registres contiennent des valeurs de
12 bits, et dautres de 8 bits seulement. Chaque registre a une tche bien
prcise. Par exemple, le premier registre nomm PC (program counter)
dtermine ladresse en mmoire de la prochaine instruction lire. On lappelle
parfois pointeur dinstruction .

21

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

De gauche droite, vous trouvez :

PC : Le nom du registre.
029 : La valeur hexadcimale (H029) contenue actuellement dans le
registre. Vous pouvez diter cette valeur.
Deux petits triangles pour ajouter ou soustraire un au contenu.
X : Une croix pour remettre le registre zro.
11..0 : La reprsentation du registre en binaire. Les cases rouges
correspondent aux bits un. Vous pouvez cliquer sur ces petits boutons
pour changer ltat dun bit.

5.3 Le saut
Vous avez dj compris le fonctionnement de linstruction NOP . Nous allons
maintenant tudier une premire instruction vritablement utile, linstruction de
saut (jump). On parle parfois aussi dinstruction de branchement (branch).

Certaines instructions simples telles que NOP sont codes avec un seul octet.
Dautres instructions plus complexes ncessitent deux, trois ou quatre octets.
Linstruction JUMP demande trois octets.

5.4 Premier saut dans linconnu


Linstruction JUMP a la valeur H10. Elle est suivie de deux octets qui
dterminent ladresse laquelle doit se poursuivre le droulement du

22

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

programme. Par exemple, si vous dsirez poursuivre lexcution ladresse


H3A0, vous devez crire une instruction de trois octets : H10 H03 HA0.
Ecrivez les valeurs H10, H03 et HA0 partir de ladresse H002 :
1. Cliquez sur licne
Nouveau , tout en haut gauche, puis rpondez
Non , si ncessaire, pour ne pas enregistrer le programme.
2. Dans le panneau de la mmoire, double-cliquez dans la valeur ladresse
H002 (actuellement H00).
3. Tapez 10, puis sur la touche Entre (Enter).
4. Le curseur sest dplac ladresse suivante. Tapez 3 (il nest pas
ncessaire de taper 03) puis Entre.
5. Tapez A0 puis Entre.

Pour pouvoir observer calmement ce premier programme rudimentaire, nous


allons lexcuter en pas pas (step by step). Cela signifie que le processeur
ne va chercher et excuter la prochaine instruction que lorsque vous appuyez sur
le bouton [S] (step). Pour passer dans ce mode, basculez le commutateur
[CONT STEP] (continuous ou step by step) sur STEP.
1. Cliquez [RUN]. Le processeur dmarre ladresse H000, mais sarrte
aussitt. Le registre PC montre la valeur H000.
2. Cliquez le bouton [S]. Linstruction H00 NOP contenue ladresse
H000 est lue et excute. Le registre PC contient maintenant H001, qui
correspond ladresse de la prochaine instruction excuter. Cest
maintenant la ligne 001 du panneau infrieur de la mmoire qui est en
rouge. La ligne rouge correspond toujours la prochaine instruction qui
sera excute, autrement dit ladresse pointe par le registre PC.
3. Cliquez le bouton [S]. Une deuxime instruction NOP est excute, et
le registre PC vaut H002. Linstruction de saut H10 H03 HA0 est prte
sexcuter.
4. Cliquez le bouton [S]. Les trois octets de linstruction JUMP ont t lus,
et le registre PC contient maintenant H3A0. Lexcution se poursuivra
dsormais partir de cette adresse.
5. Cliquez le bouton [S]. Linstruction NOP de ladresse H3A0 sest
excute, et le registre PC vaut H3A1.
Il est peu commode dcrire un programme sous forme dinstructions codes en
hexadcimal. Ds que le programme se complexifie, il devient trs difficile de sy
retrouver et de dceler les erreurs. Cest la raison pour laquelle il faut prendre

23

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

lhabitude dcrire son programme sous une autre forme, sur une simple feuille
de papier. De cette faon, notre programme scrirait ainsi :
Adr.
000
001
002
003
004

Donne
00
00
10
03
A0

Instruction
NOP
NOP
JUMP
H3A0

Commentaire
Ne fait rien
Ne fait rien
Saute ladresse H3A0

Nom du programme : jump1.dolphin

5.5 Mouvement perptuel

Nous allons exprimenter un deuxime programme trs simple, quon pourrait


appeler mouvement perptuel :
Adr.
000
001
002
003
004
005
006

Donne
00
00
00
00
10
00
00

Instruction
NOP
NOP
NOP
NOP
JUMP
H000

Nom du programme : jump2.dolphin

24

Commentaire
Ne fait rien
Ne fait rien
Ne fait rien
Ne fait rien
Saute ladresse H000

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

1. Cliquez sur licne


Nouveau , tout en haut gauche, puis rpondez
Non , si ncessaire, pour ne pas enregistrer le programme.
2. Basculez le commutateur [CONT STEP] sur CONT (continuous).
3. Enfoncez le bouton [10], pour que le processeur ne travaille pas trop vite.
4. Enfoncez le bouton [RUN]. Les cinq instructions du programme
sexcutent en boucle, et le registre PC affiche successivement H000,
H001, H002, H003 et H004 puis recommence linfini.
5. Pendant lexcution du programme, vous pouvez basculer le commutateur
[CONT STEP] sur STEP, puis appuyer autant de fois que vous le dsirez
sur [S] pour excuter le programme en pas pas.
6. Vous pouvez galement modifier le registre PC, pour dcider quelle sera la
prochaine instruction excute en appuyant sur [S].
7. Lorsque vous avez termin, appuyez sur [STOP] pour stopper le
programme.
Ce genre de comportement est souvent dsign par le terme de boucle
infinie . Il nest gnralement pas souhait, puisque lordinateur ne fera plus
rien et semblera mort !

5.6 Laddition sil vous plait

En plus du registre PC, le processeur PSI30 contient dautres registres. Les


registres A, B, X et Y permettent de manipuler des valeurs (les registres SP et F
ne seront queffleurs dans ce manuel). Voici quelques oprations possibles avec
ces registres :

Initialiser un registre avec une valeur fixe (ce que lon appelle une
constante).
Copier le contenu dun octet en mmoire dans un registre.

25

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Copier le contenu dun registre dans un octet en mmoire.


Copier un registre dans un autre.
Additionner ou soustraire des registres entre eux.
Effectuer des oprations binaires (et, ou, ou exclusif, rotations, etc.).

Lexemple ci-dessous montre une utilisation possible des registres A et B :


Adr.
000
001
002
003
004
005
006
007

Donne
50
12
51
05
84
10
00
04

Instruction
MOVE
#H12, A

Commentaire
Copie la valeur H12 dans le registre A

MOVE

#H5, B

Copie la valeur H5 dans le registre B

ADD
JUMP

B, A
H004

Ajoute B au contenu de A
Saute ladresse H004

Nom du programme : addhexa.dolphin

Excutez ce programme en mode pas pas (commutateur [CONT STEP] sur


STEP). Vous observerez le registre A prendre successivement les valeurs H12,
H17, H1C, H21, H26, etc.
Pendant le fonctionnement du programme, vous avez tout loisir de modifier le
contenu dun registre. Par exemple, essayez de modifier le contenu de B pour
additionner une autre valeur. Il est galement trs utile de modifier le registre
PC, pour continuer lexcution une autre adresse.

5.7 Silence, on tourne


Evidemment, le processeur peut agir avec les priphriques, clavier et afficheurs.
Il doit simplement utiliser des adresses comprises entre HC00 et HC0F.
Le petit programme ci-dessous fait tourner un segment sur lafficheur de gauche,
dans le sens des aiguilles dune montre :
Adr.
000
001
002
003
004
005
006
007
008

Donne
50
01
58
0C
00
30
10
00
02

Instruction
MOVE
#H1, A
MOVE

A, HC00

RL
JUMP

A
H002

Commentaire
Copie la valeur 1 dans le registre A
(premier segment vertical suprieur droite)
Copie la valeur dans A ladresse HC00,
cest--dire dans lafficheur de gauche
Dcale A dun bit vers la gauche
Saute ladresse H002

Nom du programme : shift1.dolphin

Excutez ce programme en mode continu (commutateur [CONT STEP] sur


CONT), 10 instructions par seconde [10]. Il est intressant dobserver la
valeur binaire du registre A et de voir le bit se dcaler vers la gauche :

26

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Linstruction RL (rotate left) dcale tous les bits dune position vers la
gauche. Le 7me et dernier bit de gauche revient dans le premier bit de droite.
Ainsi, le registre A prendra les valeurs H01, H02, H04, H08, H10, H20, H40,
H80, H01, H02, etc.

5.8 Sauter ou ne pas sauter, telle est la question


Ce chapitre explique le fonctionnement dune instruction essentielle, le saut
conditionnel. Elle va permettre au programme deffectuer une chose ou une
autre, en fonction du rsultat dun test.

Le programme du chapitre prcdent nest pas trs joli. Il


serait plus esthtique de ne pas allumer le segment horizontal
du milieu, ni le point dcimal.

27

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Pour cela, il faut ajouter deux nouvelles instructions, aux adresses H006 et
H008 :
Adr.
000
001
002
003
004
005
006
007
008
009
00A
00B
00C
00D

Donne
50
01
58
0C
00
30
74
3F
12
00
00
10
00
02

Instruction
MOVE
#H1, A

Commentaire
Copie la valeur 1 dans le registre A

MOVE

A, HC00

Ecrit la valeur A dans lafficheur de


gauche

RL
AND

A
#H3F, A

Dcale A dun bit vers la gauche


Efface les bits 6 et 7
(H3F vaut 0011 1111 en binaire)
Saute ladresse H000 si le rsultat de
linstruction prcdente tait nul (si A
contient H00)
Saute ladresse H002

JUMP,ZS H000

JUMP

H002

Nom du programme : shift2.dolphin

Le principe est le suivant :


1. On dcale A dun bit vers la gauche (RL A).
2. On remet zro les deux derniers bits (6 et 7), correspondant au segment
du milieu et au point dcimal (AND #H3F, A).
3. Si tous les bits restants sont zro, on saute ladresse H000, pour
remettre le premier bit dans A (valeur H01).
4. Dans le cas contraire, on saute ladresse H002, comme dhabitude, pour
continuer de dcaler A vers la gauche.
Lopration 2. se rsout avec une instruction logique appele AND . On ne
conserve que les bits qui sont un, la fois dans le registre A et dans loprande
(ici la valeur H3F lquivalent binaire 0011 1111 ladresse H007). De plus,
linstruction AND met un le bit Z du registre F (fanions, flags) si le rsultat
est nul. Sinon, elle met ce bit zro.
Lopration 3. est un saut conditionnel, ce qui signifie quon saute parfois, et
parfois pas... En fait, le saut JUMP,ZS (Zero Set) ne seffectue que si le bit Z
du registre F est un. Dans le cas contraire, cest linstruction suivante qui
sexcute, ici linstruction ladresse H00B (un saut ladresse H002).

5.9 Lecture du clavier


Le petit programme ci-dessous attend que lutilisateur clique sur une touche [0]
[7], puis montre le rsultat sur lafficheur de gauche :
Adr.
000
001
002

28

Donne
54
0C
07

Instruction
MOVE
HC07, A

Commentaire
Lecture du clavier dans A

Comprendre les microprocesseurs

003
004
005
006
007
008
009
00A
00B
00C
00D

D4
07
12
00
00
58
0C
00
10
00
00

TCLR

A:#7

Simulateur de Dauphin, par EPSITEC

Teste puis efface le bit 7

JUMP,EQ H000

Si le bit tait zro (donc quaucune


touche ntait presse), saute au dbut

MOVE

A, HC00

Ecrit la valeur lue dans lafficheur de


gauche

JUMP

H000

Revient au dbut

Nom du programme : key1.dolphin

1. Excutez ce programme en mode continu (commutateur [CONT STEP] sur


CONT) en appuyant sur [RUN].
2. Si vous cliquez sur [0], rien ne saffiche.
3. Si vous cliquez sur [3], la valeur 1 saffiche.
4. Si vous cliquez sur [5], deux segments affichent un rsultat qui ne
ressemble rien.
5. Si vous cliquez sur [7], une sorte de J saffiche.

Voil qui semble bien trange. Pourtant, notre programme fonctionne la


perfection. Lorsque vous appuyez sur la touche [3], la valeur H83 est lue.
Linstruction TCLR teste puis efface le bit 7. La valeur devient donc H03.
Cette valeur est ensuite transfre dans le premier afficheur (adresse HC00). Il

29

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

faut comprendre que cette valeur H03 a lquivalent binaire 0000 0011. Elle
signifie donc allumer les segments correspondant aux bits 0 et 1 , cest--dire
les deux segments verticaux de droite, qui semblent ainsi former le chiffre 1 .
Pour afficher le chiffre 3, il faudrait allumer cinq
segments avec la valeur H67 (0110 0111 en
binaire).
Pour afficher une valeur ayant la mme apparence que la touche clique, il faut
compliquer notre programme :
Adr.
000
001
002
003
004
005
006
007
008
009
00A
00B
00C
00D
00E
00F
010
011
012
013
014
015
016
017
018
019
01A
01B
01C
01D

Donne
54
0C
07
D4
07
12
00
00
74
07
42
54
10
16
58
0C
00
10
00
00
FF
08
3F
03
6D
67
53
76
7E
23

Instruction
MOVE
HC07, A

Commentaire
Lecture du clavier dans A

TCLR

Teste puis efface le bit 7

A:#7

JUMP,EQ H000

Si le bit tait zro (donc quaucune


touche ntait presse), saute au
dbut
Masque les bits inutiles

AND

#H07, A

MOVE
MOVE

A, X
H016+{X}, A

MOVE

A, HC00

JUMP

H000

Revient au dbut

TABLE

#8

Signale une table de 8 octets

BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE

#H3F
#H03
#H6D
#H67
#H53
#H76
#H7E
#H23

Digits
Digits
Digits
Digits
Digits
Digits
Digits
Digits

Copie A dans X
Copie la valeur contenue la Xme
position de la table ladresse H016
dans A
Copie la valeur lue dans la table
dans lafficheur de gauche

pour
pour
pour
pour
pour
pour
pour
pour

le
le
le
le
le
le
le
le

chiffre
chiffre
chiffre
chiffre
chiffre
chiffre
chiffre
chiffre

0
1
2
3
4
5
6
7

(0011
(0000
(0110
(0110
(0101
(0111
(0111
(0010

1111)
0011)
1101)
0111)
0011)
0110)
1110)
0011)

Nom du programme : key2.dolphin

Les adresses H016 H01D contiennent une table de huit valeurs, qui donnent
les combinaisons exactes de bits pour allumer les segments permettant de
reprsenter les chiffres 0 7.

30

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

5.10 Routines en mmoire morte


Tous les exemples prcdents montrent quil est complexe deffectuer des tches
apparemment trs simples. Cest pourquoi les tches universelles comme
attendre que lutilisateur appuie sur une touche, ou afficher une valeur, sont
crites une bonne fois pour toutes, sous forme de routines. Votre programme
peut faire appel ces routines, qui sont programmes dans la mmoire morte
(ROM).
Le programme ci-dessous fait lcho des touches presses sur les afficheurs
successifs, de gauche droite.
Un appel une routine de la mmoire ROM seffectue avec linstruction CALL ,
qui vaut H01. Elle est suivie de deux octets qui correspondent ladresse de la
routine. Par exemple, _WaitKey est ladresse H803. Un appel cette routine
scrit donc H01, H08, H03.
Adr.
000
000
002
003
004
005
006
007
008
009
00A
00B

Donne
51
00
01
08
03
01
08
0C
29
10
00
02

Instruction
MOVE
#H00, B

Commentaire
Commence sur le digit de gauche

CALL

H803

CALL

H80C

INC
JUMP

B
H002

_WaitKey
Attente et lecture du clavier dans
A
_DisplayHexaDigit
Affiche le digit contenu dans A
sur lafficheur dtermin par B
Passe lafficheur suivant (+1)
Revient au dbut

Nom du programme : rom1.dolphin

La documentation des routines peut tre consulte laide du panneau suprieur


droite, onglet ROM. On y apprend que _DisplayHexaDigit affiche la valeur
contenue dans le registre A sur lafficheur dsign par le registre B.
Linstruction INC augmente de 1 le contenu de B. Cette opration sappelle
incrmenter . Ainsi, chaque pression sur une touche utilise lafficheur suivant,
de gauche droite.
Le registre B doit contenir une valeur comprise entre 0 et 3. Aprs quatre
touches presses, B vaudra donc 4, ce qui devrait causer un problme, puisquil
nexiste pas de cinquime afficheur. Mais heureusement, _DisplayHexaDigit est
suffisamment malin pour considrer lafficheur 4 comme le premier, lafficheur 5
comme le deuxime, etc. Cest lun des avantages dutiliser des routines; on peut
les crire trs soigneusement, pour rsoudre un maximum de cas tordus.
Lorsque vous excutez un programme en mode pas pas , lappel dune
routine par linstruction CALL excute toute la routine dun coup. Si vous

31

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

souhaitez entrer dans la routine, il faut placer le commutateur [OVER INTO] sur
INTO (over signifie par-dessus et into signifie dans ).

5.11 Codage manuel ou automatique

Le codage manuel des instructions vu jusqu prsent tait rellement utilis


avec les premiers systmes microprocesseurs. Cest un travail fastidieux et
source de nombreuses erreurs. Heureusement, le bouton [CODE] permet de
saffranchir de cette tape.

Ecrivons un programme qui fait rebondir une petite balle sur les bords gauche et
droite de lcran bitmap. La balle fera un mouvement horizontal de va-et-vient.

32

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Cliquez sur licne


Nouveau , tout en haut gauche, puis rpondez
Non , si ncessaire, pour ne pas enregistrer le programme.

1. Double-cliquez dans linstruction NOP ladresse H000, puis tapez


clr x . Lemploi de majuscules ou de minuscules na pas dimportance.
2. Cliquez le petit vu vert.
3. Linstruction est code automatiquement sil ny a pas de faute de frappe.
Elle occupe entre un et quatre octets. Dans cet exemple, elle occupe un
octet (H22) ladresse H000.
Procdez de mme pour chaque instruction de la 3me colonne, puis validez avec
la touche Entre pour passer la ligne suivante :
Adr.
000
001
002
004
006
009
00B
00D
010
012
013
016
018
01B
01E

Donne
22
23
51 01
72 1F
14 00 0B
51 FF
72 00
17 00 12
51 01
86
01 08 1B
50 0A
01 08 06
01 08 1B
10 00 04

Instruction
CLR
X
CLR
Y
MOVE
#H01, B
COMP
#H1F, X
JUMP,LO H00B
MOVE
#HFF, B
COMP
#H00, X
JUMP,HI H012
MOVE
#H01, B
ADD
B, X
CALL
H81B
MOVE
#H0A, A
CALL
H806
CALL
H81B
JUMP
H004

Commentaire
Position horizontale ( gauche)
Position verticale (en haut)
Direction (de gauche droite)
Touche le bord droite ?
Non -> saute ladresse H00B
Nouvelle direction (de droite gauche)
Touche le bord gauche ?
Non -> saute ladresse H012
Nouvelle direction (de gauche droite)
Avance ou recule X horizontalement
_NotPixel allume le nouveau point
Copie la dure attendre dans A
_WaitSec attend
_NotPixel teint lancien point
Recommence

Nom du programme : rebond1.dolphin

Ce programme est bas sur la routine H81B _NotPixel qui inverse sur lcran
bitmap le point dont on donne les coordonnes x;y dans les registres de mmes
noms X et Y. Comme lcran bitmap mesure 32 x 24 points, le registre X doit
varier entre 0 et 31 (H00 et H1F).
La direction est stocke dans le registre B. Elle vaut 1 (H01) de gauche droite
ou -1 (HFF) de droite gauche. Linstruction ADD B, X augmente ou diminue
de un le contenu de X. Au dpart, X prend les valeurs 0, 1, 2, , 30 et 31. A ce
moment, la balle touche le bord droite. La direction est alors inverse en mettant
la valeur -1 dans B. Les prochaines valeurs de X seront donc 30, 29, 28, etc.

33

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Pour excuter ce programme :


1. Cliquez sur le bouton [100'000] pour excuter 100'000 instructions par
seconde.
2. Cliquez sur le bouton [DISPLAY] pour afficher lcran bitmap.
3. Vrifiez que le commutateur [CONT STEP] soit bien sur CONT.
4. Cliquez sur le bouton [RUN].
Un petit point vert doit faire la navette gauche-droite en haut de lcran bitmap.

Nous allons maintenant amliorer le programme pour dessiner le petit point au


milieu de lcran :

1. Cliquez sur le bouton [STOP] pour stopper le programme.


2. Le programme a certainement t stopp pendant quil excutait la routine
H806 _WaitSec en ROM. Cliquez alors sur le bouton [RAM] pour afficher
votre programme ladresse H000.
3. Slectionnez linstruction CLR Y ladresse H001, puis tapez la
nouvelle instruction move #12,y , pour mettre la coordonne verticale
au milieu de lcran bitmap dont la hauteur mesure 24 points.
4. Cliquez le petit vu vert. Linstruction apparat sous une forme
lgrement diffrente : MOVE #H0C, Y . La valeur 12 donne sans
autre prcision est une valeur dcimale. Les instructions sont toujours
codes en utilisant lhexadcimal, do lapparition de H0C qui est
lquivalent de D12.
5. La nouvelle instruction occupe un octet de plus que lancienne. Toutes les
instructions suivantes ont donc t pousses un octet plus loin. Les

34

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

adresses H00B, H012 et H004 utilises pour les sauts ne sont plus
correctes, ce qui est mis en vidence par les points dexclamation sur fond
jaune.
Pour que le programme fonctionne nouveau, il faut corriger manuellement les
adresses des sauts :
1. Cliquez sur linstruction JUMP,LO H00B ladresse H007, et corrigezla en JUMP,LO H00C .
2. Cliquez sur linstruction JUMP,HI H012 ladresse H00E, et corrigez-la
en JUMP,HI H013 .
3. Cliquez sur linstruction JUMP H004 ladresse H01F, et corrigez-la en
JUMP H005 .
Le programme devrait maintenant fonctionner la perfection, avec le petit point
dessin au milieu de lcran.

5.12 Bonjour

Ce petit programme fait dfiler le mot HELLO sur les afficheurs. Il illustre
bien la puissance des registres X et Y du processeur PSI30.

X correspond lindex de la lettre dans la table. Il varie de 0 8.


Y correspond lafficheur. Il varie de 0 3.

35

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Linstruction ladresse H004 est particulirement intressante. Elle met la


bonne lettre dans le registre A, en fonction du rang dans le mot (registre X) et
du rang de lafficheur utiliser (registre Y).

La figure ci-dessus montre le contenu des registres X et Y lors de laffichage de la


lettre O sur le troisime afficheur.
Adr.
000
002
004
007
00A
00B
00D
010
012
015
016
018
01B
01E
020
021
022
023
024
025
026
027
028
029
02A
02B

Donne
52 00
53 00
54 30 20
58 2C 00
2B
73 04
14 00 04
50 03
01 08 06
2A
72 08
16 00 02
10 00 00
FF 0C
00
00
00
5B
7C
1C
1C
3F
00
00
00
00

Instruction
MOVE
#H00, X
MOVE
#H00, Y
MOVE
H020+{X}+{Y}, A
MOVE
A, HC00+{Y}
INC
Y
COMP
#H04, Y
JUMP,LO H004
MOVE
#H03, A
CALL
H806
INC
X
COMP
#H08, X
JUMP,LS H002
JUMP
H000
TABLE #H0C
BYTE
#H00
BYTE
#H00
BYTE
#H00
BYTE
#H5B
BYTE
#H7C
BYTE
#H1C
BYTE
#H1C
BYTE
#H3F
BYTE
#H00
BYTE
#H00
BYTE
#H00
BYTE
#H00

Commentaire
Rang de la lettre
Rang du digit
Cherche la lettre
Affiche la lettre sur le digit
Digit suivant
4me digit atteint ?
Si non, saute en H004
Si oui, attend 1.5 secondes
_WaitSec
Lettre suivante
Dernire lettre atteinte ?
Si non, saute en H002
Si oui, saute au dbut
Dbut dune table de 12 octets
Caractre espace
Caractre espace
Caractre espace
Caractre H (0101 1011)
Caractre E (0111 1100)
Caractre L (0001 1100)
Caractre L (0001 1100)
Caractre O (0011 1111)
Caractre espace
Caractre espace
Caractre espace
Caractre espace

Nom du programme : hello1.dolphin

Excutez ce programme la frquence de [10'000] instructions par seconde.

36

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

5.13 Lassembleur dinstructions

Pour la suite des exercices, nous allons utiliser une ultime mthode, encore plus
souple : lassembleur dinstructions.

Le principe est le suivant :

Vous ditez un texte qui dcrit les instructions sous une forme la plus
claire possible. Ce texte est appel source .
Un outil appel assembleur traduit ce texte en instructions binaires.

1. Texte source. Les routines en ROM sont prdfinies, ce qui permet


dcrire CALL _DisplayHexaByte , qui est bien plus clair que CALL
H80F (qui reste cependant possible).
2. Code gnr.

37

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

La cration dun programme seffectue dans cet ordre :


1. Edition du programme source.
2. Assemblage automatique, en cliquant sur le bouton [ASSEMBLER].
3. Si des fautes de frappe sont dtectes pendant lassemblage, les lignes
incrimines sont marques spcialement. Vous devez alors corriger les
erreurs, puis recommencer au point 2. Le bouton [ERR] dplace le curseur
sur la prochaine erreur.
4. Excution du programme avec le bouton [RUN], souvent en mode STEP,
pour analyser les dysfonctionnements, avec longlet [CODE].
5. Correction des ventuels problmes en recommenant le cycle au point 1.
Un gros avantage de lassembleur rside dans la dfinition de constantes. Par
exemple, le programme en haut de la page prcdente pourrait scrire ainsi :
NUMBER1 = H12
NUMBER2 = HA3
MOVE
#NUMBER1, A
ADD
#NUMBER2, A
CALL
_DisplayHexaByte
HALT
Le programme du chapitre 5.8 cr en mode [CPU+MEM], qui fait tourner un
segment sur lafficheur de gauche, scrit ainsi avec lassembleur :
.LOC

MOVE

#1, A

; met le bit initial

MOVE
RL
AND
JUMP,ZS
JUMP

A, _DIGIT0
A
#H'3F, A
START
LOOP

;
;
;
;
;

START:
LOOP:
allume le bon segment
dcale le bit gauche
masque les bits inutiles
si plus rien -> START
recommence linfini

Vous constatez immdiatement une norme simplification dans la gestion des


sauts. Par exemple, la dernire instruction du programme scrit JUMP LOOP ,
ce qui signifie saute ltiquette LOOP . Nimporte o ailleurs dans le
programme, vous dfinissez une tiquette LOOP: et le tour est jou :
linstruction de saut continue lexcution du programme sur linstruction qui suit
ltiquette. Lassembleur se charge de calculer les bonnes adresses, y compris si
vous ajoutez ou supprimez des instructions entre le saut et ltiquette.
Les priphriques sont prdfinis (voir longlet Intro ), ce qui permet dcrire
MOVE A, _DIGIT0 , qui est bien plus clair que MOVE A, HC00 .
Linstruction spciale .LOC 0 est facultative. Elle dtermine ladresse
laquelle est gnr le code.

38

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Le texte compris entre le point-virgule et la fin de la ligne est ignor par


lassembleur. Ceci permet dcrire des commentaires, afin dexpliquer le
fonctionnement du programme.

5.14 Encore des rebonds


Au chapitre 5.11, nous avons fait rebondir un point sur les bords gauche et droite
de lcran bitmap. Nous allons maintenant faire rebondir une balle compose de
huit points.

Le programme du chapitre 5.11 cr en mode [CODE] scrit ainsi avec


lassembleur :
.LOC
CLR
MOVE
MOVE

0
X
#12, Y
#1, B

; X gauche
; Y au milieu
; de gauche droite

LOOP:
COMP
#31, X
JUMP,LO RIGHT
MOVE
#-1, B

; touche le bord droite ?


; non -> RIGHT
; de droite gauche

COMP
#0, X
JUMP,HI LEFT
MOVE
#1, B

; touche le bord gauche ?


; non -> LEFT
; de gauche droite

ADD
CALL

B, X
_NotPixel

; avance ou recule X
; allume le nouveau point

MOVE
CALL

#10, A
_WaitSec

; dure attendre
; attend...

CALL
JUMP

_NotPixel
LOOP

; teint l'ancien point

RIGHT:

LEFT:

39

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Le dessin de la balle seffectue par les deux instructions CALL _NotPixel , qui
inversent simplement un pixel dans lcran. Mais rien nempche de remplacer
lappel de cette routine en ROM par une routine dfinie dans la mmoire RAM,
par votre programme.
La routine qui dessine une balle de huit points scrit ainsi :
; Inverse la balle.
; in X position horizontale
;
Y position verticale
; out ; mod F
NOTBALL:
PUSH
X
PUSH
Y
DEC
CALL
INC
CALL
INC
INC
CALL
INC
CALL
DEC
INC
CALL
DEC
CALL
DEC
DEC
CALL
DEC
CALL

Y
_NotPixel
X
_NotPixel
X
Y
_NotPixel
Y
_NotPixel
X
Y
_NotPixel
X
_NotPixel
X
Y
_NotPixel
Y
_NotPixel

POP
POP
RET

Y
X

; A
; B

; C
; D

; E
; F

; G
; H

Les cinq premires lignes qui commencent par un point-virgule sont facultatives.
Il sagit de commentaires destins faciliter la comprhension du
fonctionnement de la routine. Cest une bonne habitude que de prciser ce
quutilise une routine en entre (in), ce quelle fournit ventuellement en sortie
(out), et les registres quelle modifie (mod).
Une routine est toujours termine par linstruction RET (return).

40

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

1. Cliquez sur licne


Ouvrir en haut gauche, et slectionnez le
programme rebond2.dolphin .
2. Cliquez sur le bouton [SOURCE].
3. A la fin du programme, tapez le code de la routine NOTBALL dcrit la
page prcdente.
4. Effectuez les corrections marques en rouge ci-dessous.
5. Cliquez sur [ASSEMBLER] et corrigez les ventuelles erreurs.
6. Cliquez sur [100000] puis sur [RUN].
.LOC
CLR
MOVE
MOVE

0
X
#11, Y
#1, B

; X gauche
; Y au milieu
; de gauche droite

LOOP:
COMP
#29, X
JUMP,LO RIGHT
MOVE
#-1, B

; touche le bord droite ?


; non -> RIGHT
; de droite gauche

COMP
#1, X
JUMP,HI LEFT
MOVE
#1, B

; touche le bord gauche ?


; non -> LEFT
; de gauche droite

ADD
CALL

B, X
NOTBALL

; avance ou recule X
; allume nouvelle balle

MOVE
CALL

#10, A
_WaitSec

; dure attendre
; attend...

CALL
JUMP

NOTBALL
LOOP

; teint l'ancienne balle

RIGHT:

LEFT:

NOTBALL:
etc
RET
Si vous souhaitez aller plus loin, ouvrez le programme rebond4.dolphin, qui fait
rebondir une balle 45 degrs sur les quatre bords de lcran bitmap. Il a suffit
de quelques instructions supplmentaires pour grer le dplacement vertical.

41

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

5.15 La pile
Pour comprendre le fonctionnement du programme du chapitre prcdent,
quelques explications sur la pile (stack) simposent.

La pile est une zone mmoire pointe par le registre SP (stack pointer). Au
dpart, SP est initialis juste aprs la fin de la RAM, ladresse H800. Lappel
dune routine sauvegarde ladresse de retour sur la pile la fin de la RAM.
Supposons que ladresse H011 contienne linstruction CALL H050 . Lors de
son excution, le processeur effectue les tches suivantes :
1. Le registre SP est diminu de 2. Il vaut donc H7FE.
2. Ladresse de retour H014 est sauvegarde sur la pile. Cest ladresse de
linstruction qui suit le CALL .
3. Saut au dbut de la routine appele, ladresse H050.

42

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

La routine se termine par linstruction RET , qui effectue les tches suivantes :
1. Ladresse de retour H014 est rcupre sur la pile.
2. Le registre SP est augment de 2. Il vaut donc nouveau H800.
3. Saut ladresse de retour H014.
Les instructions PUSH et POP sauvegardent et restituent des registres sur
la pile. PUSH effectue les tches suivantes :
1. SP est diminu de 1.
2. La valeur contenue dans le registre est sauvegarde sur la pile.
POP effectue les tches suivantes :
1. La valeur rcupre sur la pile est copie dans le registre.
2. SP est augment de 1.

43

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

6 A laide

Ce petit manuel ne fait quaborder le vaste sujet de la programmation des


microprocesseurs. Si vous tes curieux, vous aurez remarqu que le panneau
suprieur droite donne le rsum de toutes les instructions du processeur PSI30,
dans longlet Ops. Vous pouvez ainsi facilement exprimenter dautres
instructions que celles vues ici.
Si vous souhaitez aller plus loin, ouvrez les programmes hello2.dolphin et
hello3.dolphin et essayez den comprendre le fonctionnement. Plusieurs petits
jeux sont galement disponibles : pingpong, mur, snake et life.
Sur le site www.epsitec.ch/dauphin, vous trouverez la suite de ce manuel.

7 Cest mga
Les divers chiffres qui caractrisent les ordinateurs modernes sont tellement
grands quon a pris lhabitude de parler de kilos, de mgas et de gigas.
Abrviation
K
M
G
T

Nom
kilo
mga
giga
tra

Quantit
mille
un million
un milliard
un billion

Valeur approximative
1000
1'000000
1'000000000
1'000000000000

Valeur exacte
1024
1'024 kilos
1'024 mgas
1'024 gigas

Voici quelques capacits usuelles :


Mdia
Disquette
CD
Mmoire vive
DVD
Disque dur

Capacit
1.4 mga octet
700 mga octets
1 giga octet
9 giga octets
200 giga octets

Abrviation
1.4 Mo
700 Mo
1 Go
9 Go
200 Go

On parle souvent de Mb (mga-byte) ou Gb (giga-byte). Il sagit de termes


anglo-saxons exactement quivalents Mo et Go.

44

Vous aimerez peut-être aussi