Vous êtes sur la page 1sur 48

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

Sommaire
1 Introduction ......................................................................................... 3 1.1 1.2 2 3 4 Le vritable Dauphin ........................................................................ 3 Le simulateur de Dauphin ................................................................. 4

Binaire et hexadcimal .......................................................................... 6 Pour ne pas perdre la mmoire ............................................................... 8 Une mmoire de Dauphin .................................................................... 10 4.1 4.2 4.3 4.4 4.5 Les priphriques .......................................................................... 12 Laffichage .................................................................................... 13 Lcran bitmap .............................................................................. 15 Le clavier ..................................................................................... 16 La mmoire morte ......................................................................... 17 Tout de suite ? .............................................................................. 20 Dans les entrailles ......................................................................... 21 Le saut ........................................................................................ 22 Premier saut dans linconnu ............................................................ 22 Mouvement perptuel .................................................................... 24 Laddition sil vous plait .................................................................. 25 Silence, on tourne ......................................................................... 26 Sauter ou ne pas sauter, telle est la question ................................... 27 Lecture du clavier .......................................................................... 28

Le processeur ..................................................................................... 18 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9

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 7 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 : 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).

12

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 Commentaire Ne fait rien Ne fait rien Ne fait rien Ne fait rien Saute ladresse H000

Nom du programme : jump2.dolphin

24

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 MOVE ADD JUMP #H5, B B, A H004 Commentaire Copie la valeur H12 dans le registre A Copie la valeur H5 dans le registre B 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 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

RL JUMP

A 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 MOVE A, HC00 Commentaire Copie la valeur 1 dans le registre A Ecrit la valeur A dans lafficheur de gauche 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

RL AND

A #H3F, A

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 Donne 54 0C 07 Instruction MOVE HC07, A Commentaire Lecture du clavier dans A

28

Comprendre les microprocesseurs

Simulateur de Dauphin, par EPSITEC

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

Teste puis efface le bit 7 Si le bit tait zro (donc quaucune touche ntait presse), saute au dbut Ecrit la valeur lue dans lafficheur de gauche Revient au dbut

JUMP,EQ H000

MOVE

A, HC00

JUMP

H000

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

A:#7

Teste puis efface le bit 7 Si le bit tait zro (donc quaucune touche ntait presse), saute au dbut Masque les bits inutiles 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 Revient au dbut

JUMP,EQ H000

AND MOVE MOVE

#H07, A A, X H016+{X}, A

MOVE

A, HC00

JUMP

H000

TABLE BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE

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

Signale une table de 8 octets Digits Digits Digits Digits Digits Digits Digits Digits 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 CALL H803 Commentaire Commence sur le digit de gauche _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

CALL

H80C

INC JUMP

B H002

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 START: MOVE LOOP: MOVE RL AND JUMP,ZS JUMP A, _DIGIT0 A #H'3F, A START LOOP ; ; ; ; ; allume le bon segment dcale le bit gauche masque les bits inutiles si plus rien -> START recommence linfini #1, A ; met le bit initial 0

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 LOOP: COMP #31, X JUMP,LO RIGHT MOVE #-1, B RIGHT: COMP #0, X JUMP,HI LEFT MOVE #1, B LEFT: ADD CALL MOVE CALL CALL JUMP B, X _NotPixel #10, A _WaitSec _NotPixel LOOP ; avance ou recule X ; allume le nouveau point ; dure attendre ; attend... ; teint l'ancien point ; touche le bord gauche ? ; non -> LEFT ; de gauche droite ; touche le bord droite ? ; non -> RIGHT ; de droite gauche 0 X #12, Y #1, B

; X gauche ; Y au milieu ; de gauche droite

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 POP POP RET Y _NotPixel X _NotPixel X Y _NotPixel Y _NotPixel X Y _NotPixel X _NotPixel X Y _NotPixel Y _NotPixel 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 LOOP: COMP #29, X JUMP,LO RIGHT MOVE #-1, B RIGHT: COMP #1, X JUMP,HI LEFT MOVE #1, B LEFT: ADD CALL MOVE CALL CALL JUMP 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. B, X NOTBALL #10, A _WaitSec NOTBALL LOOP ; avance ou recule X ; allume nouvelle balle ; dure attendre ; attend... ; teint l'ancienne balle ; touche le bord gauche ? ; non -> LEFT ; de gauche droite ; touche le bord droite ? ; non -> RIGHT ; de droite gauche 0 X #11, Y #1, B

; X gauche ; Y au milieu ; de gauche droite

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