COURS 5.TXT/fr
******************************************************************
* *
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
* *
* par Le F�roce Lapin (from 44E) *
* *
* Cours num�ro 5 *
* *
******************************************************************
Suite de l'�tude du Status register, les interruptions.
Etant donn� que nous avons parfaitement compris ce qui se passait
dans le cas o� le 68000 trouvait le bit T du Status Register � 1,
c'est-�-dire tout le syst�me d'adresse fixe � laquelle on trouve
l'adresse de la routine, nous allons pouvoir continuer et en fait
finir la description des autres bits de ce Status Register.
Le bit S / Superviseur
Le 68000 peut �voluer dans 2 modes: le mode Superviseur et le
mode Utilisateur. Dans le mode superviseur, nous avons acc�s �
TOUTES les instructions du 68000 et � TOUTE la m�moire, alors
qu'en mode utilisateur certaines instructions ne peuvent �tre em-
ploy�es, et l'acc�s � certaines parties de la m�moire est in-
terdit.
Effectivement cela peut sembler au premier abord surprenant:
Vous avez achet� une machine, c'est quand m�me pour pouvoir l'uti-
liser dans sa totalit�! L� encore, nous tombons dans le pi�ge qui
consiste � m�langer ATARI ST et 68000 MOTOROLA. Gr�ce � l'�norme
puissance de ce micro-processeur, il est tout � fait possible
d'envisager un travail multi-utilisateur.
Gonflons notre ST � 8 Mega octets, �quipons le d'un �norme disque
dur, et connectons le � plusieurs terminaux. Nous avons donc plu-
sieurs claviers, plusieurs �crans, mais en revanche un seul mi-
cro-processeur, celui de l'unit� centrale (dont le nom prend ici
toute sa valeur) et une seule m�moire, dans laquelle tout le monde
pioche � tours de bras. L�, la diff�renciation Superviseur/Utili-
sateur prend son sens. Le Superviseur, c'est le 'propri�taire' de
l'unit� centrale, les personnes utilisant les terminaux n'�tant
que des 'utilisateurs'. Le fait de ne leur autoriser qu'une partie
des instructions et de la m�moire, a pour but d'�viter les planta-
ges car si dans le cas d'une mono-utilisation, un plantage total
de la machine est toujours g�nant, dans le cas d'une multi-utili-
sation, cela rel�ve de la catastrophe, car on ne plante plus le
travail d'une seule personnes mais de plusieurs!
Le bit S du Status Register, s'il est � 0, indique que nous sommes
en mode Utilisateur. A 1, il indique que nous sommes en Super-
viseur.
Tout comme MONST indiquait l'�tat Trace en indiquant T � c�t� du
SR, il indique U ou S suivant le mode dans lequel nous nous
trouvons.
Jetons un coup d'oeil en arri�re sur le chapitre d�crivant le bro-
chage du 68000 (cours suppl�mentaire A). Nous retrouvons cette
distinction au niveau des broches FC0, FC1, FC2.
Avant d'�tudier les 3 bits restant du SR (I2, I1, I0), il faut sa-
voir que le Status Register est en fait s�par� en 2 octets. L'oc-
tet de poids fort (bit 8 � 15) est appel� octet superviseur, alors
que l'octet de poids faible est l'octet utilisateur.
En mode utilisateur on ne peut �crire que dans l'octet utilisateur
alors qu'en mode superviseur nous avons acc�s au word dans sa to-
talit�.
L'octet utilisateur contenant les bits de conditions (bits X N Z V
C), on l'appelle �galement registre des codes conditions (Condi-
tion Code Register), ou CCR.
Les bits I2, I1 et I0 (Interrupt Mask)
Ces 3 bits servent � repr�senter les masques d'interruption. Mais
voyons tout d'abord ce qu'est une interruption. Nous avons �tudi�
pr�c�demment le fonctionnement li� au bit T (trace). Lorsque ce
bit est positionn�, le programme principal est interrompu, au pro-
fit d'une routine sp�ciale. C'est en quelque sorte le principe de
l'interruption.
Une routine en interruption, c'est un bout de programme diff�rent
du programme principal. A intervalles r�guliers ou � cause d'un
�l�ment ext�rieur, le 68000 va interrompre (c'est bien le mot!) le
programme principal, pour aller ex�cuter cette routine. Lorsque
celle-ci sera termin�e, il y aura retour au programme principal.
L'exemple le plus simple est celui du t�l�phone: Je travaille �
mon bureau (c'est le programme principal) lorsque le t�l�phone
sonne. Je d�tecte l'interruption, j'arr�te mon travail et je d�-
croche (ex�cution de l'interruption). La conversation termin�e, je
raccroche et je retourne � mon occupation premi�re.
Maintenant, plus compliqu�: Interruption de mon travail principal.
Je d�croche, mais en cours de conversation, on sonne � la porte.
L� intervient le principe de la priorit� d'interruption. Si la
porte d'entr�e � une priorit� sup�rieure � celle du t�l�phone,
j'interrompt la conversation t�l�phonique pour aller ouvrir: Il y
a interruption de l'interruption. Une fois claqu� la porte au
124�me marchand de balayettes de la journ�e je reprends le t�l�-
phone, je finis la conversation, je raccroche puis je me remets �
ma t�che principale.
Par contre, si l'interruption 'porte d'entr�e' a une priorit�
inf�rieure � celle du t�l�phone, j'attendrai d'avoir fini avec ce-
lui-ci avant d'aller ouvrir.
Les 3 bits I2, I1 et I0 (Interrupt mask) permettent de d�finir le
niveau mini d'interruption qui sera pris en cours. Comme on ne
poss�de que 3 bits, on ne peut d�finir que 7 niveau, de 1 � 7 (on
ne parle pas ici du niveau 0, car c'est le niveau de travail 'nor-
mal' de la machine. Si le niveau est � 0, c'est qu'il n'y a pas
d'interruption.). Ainsi, si nous avons 011 pour ces 3 bits, nous
obtenons 3 comme niveau mini. Les interruptions de niveaux 1 et 2
ne seront donc pas prises en compte. Puisque le niveau indiqu� par
les 3 bits sera accept� comme niveau d'interruption, nous en d�-
duisons que si les bits sont � 111, seuls les interruptions de ni-
veau 7 seront prises en compte. Or nous voyons bien �galement
qu'il n'est pas possible de d�finir un niveau minimum de 8 par
exemple, et donc qu'il sera impossible d'emp�cher une interruption
de niveau 7. Ce niveau est donc dit 'non-masquable'.
Les interruptions de niveau 7 sont donc appel�es NMI c'est � dire
non-maskable-interrupt.
A noter qu'il n'est pas possible d'op�rer une s�lection pr�cise et
par exemple d'autoriser les interruptions de niveaux 4, 5 et 7 et
pas celles de niveau 6. Si les bits sont � 100, les interruptions
de niveau 4, 5, 6 et 7 seront autoris�es. Vous pouvez jeter � nou-
veau un coup d'oeil sur le cours annexe A. Vous retrouverez bien
sur le 68000 les broches I2, I1 et I0. Une remarque cependant, ces
broches sont actives � l'�tat bas, c'est-�-dire qu'elle indique
quelque chose lorsqu'il n'y a pas de courant, � l'inverse des au-
tres broches.
Par contre leur repr�sentation au sein du Status Register se fait
dans le bon 'sens'.
Nous sommes maintenant amen�s � nous poser une question similaire
� celle que nous nous sommes pos�e lors de l'�tude du mode Trace.
Le 68000 re�oit une demande d'interruption. Il compare le niveau
de celle-ci � la limite fix�e par les bits I du Status Register.
Si l'interruption est acceptable, il sauve le Status Register et
met en place dans les bits I le niveau de l'interruption qu'il va
ex�cuter afin de ne pas �tre g�n� par une autre demande plus fai-
ble. Il stoppe alors l'ex�cution de son programme principal pour
se d�tourner vers la routine. Une fois celle-ci termin�e, il re-
vient au programme principal. C'est bien joli, mais o� a-t-il
trouv� la routine en interruption ? Et bien simplement en utili-
sant le m�me principe que pour le mode Trace. Nous avons vu que
lorsque le bit T �tait en place, le 68000 allait voir � l'adresse
$24 et qu'il y trouvait un long mot, ce long mot �tant l'adresse
de la routine. Pour les interruptions, le principe est le m�me: si
c'est une interruption de niveau 4, c'est � l'adresse $70 que le
68000 trouvera un long mot, ce long mot, comme dans le cas du mode
Trace �tant l'adresse de la routine � ex�cuter. Si l'interruption
est de niveau 1, c'est le long mot situ� � l'adresse $64 etc... Il
est bien �vident que c'est au programmeur de placer ces long mots
� ces adresses: On pr�pare une routine, on cherche son adresse de
d�part, puis on note celle ci � l'endroit pr�cis o� l'on sait que
le 68000 viendra la chercher.
Toutes ces adresses �tant situ�es dans le premier kilo de m�moire
de notre machine, �tudions de plus pr�s ces 1024 octets. (Vous
trouverez un tableau repr�sentant ce kilo en annexe) Pour le mo-
ment nous n'allons faire qu'y rep�rer les quelques �l�ments que
nous avons d�j� �tudi�s. Toutes ces adresses ont des num�ros d'or-
dres, et � cause de leur fonction propre (ne faire que communiquer
l'adresse d'une routine), on les appelle 'vecteurs'.
Nous retrouvons bien en $24 le vecteur 9, correspondant au mode
Trace, de $64 � $7C les vecteurs correspondants aux interruptions
de niveau 1 � 7. Le niveau 0, �tant le niveau 'normal' de travail,
n'a pas de vecteur.
Nous pouvons d�j� expliquer d'autres vecteurs: Ainsi le num�ro 5
(adresse $14) c'est le vecteur de division par 0. Le 68000 ne peut
pas faire de division par 0. Lorsque le programme essaye, il se
produit la m�me chose que pour le mode Trace: Ayant d�tect� une
division par 0, le 68000 fonce � l'adresse $14, y trouve une
adresse de routine et va ex�cuter celle-ci. Dans la plupart des
cas cette routine va afficher quelques bombes � l'�cran et tout
bloquer. Rien ne vous emp�che cependant de pr�parer votre propre
routine et de mettre son adresse en $14. Ainsi dans un programme
de math (beurkk!) cette routine peut afficher "division par 0 im-
possible". Si l'utilisateur tente une telle division, inutile de
faire des tests pour le pr�venir de cette impossibilit�, le 68000
s'en chargera tout seul.
Les autres vecteurs
Erreur bus. Nous avons vu pr�c�demment que le 68000 utilise ce
que nous appelons un bus pour recevoir ou transmettre des donn�es.
Si une erreur survient sur celui ci, il y a saut a l'adresse $8
pour trouver l'adresse de la routine qui sera alors ex�cut�e.
Erreur d'adresse. Le 68000 ne peut acc�der qu'� des adresses
paires. S'il tente d'acc�der � une adresse impaire, il se produit
une erreur d'adresse (m�me principe de traitement que l'erreur
bus, ou le mode Trace, vecteur, adresse etc...). Nous verrons plus
tard qu'il nous sera possible d'acc�der � des adresse impaires,
mais avec des pr�cautions.
Instructions ill�gales. Nous avons vu que le travail de l'as-
sembleur consistait simplement � transformer en chiffres, ligne
par ligne, notre programme. Cependant, si nous mettons en m�moire
une image, celle-ci sera �galement plac�e dans le 'tube m�moire'
sous forme de chiffres. La diff�rence c'est que ces chiffres l�
ne veulent rien dire pour le 68000 en tant qu'instruction. Si
nous ordonnons au 68000 d'aller � cette adresse (celle de
l'image) il essayera de d�crypter ces chiffres comme des instruc-
tions, ce qui d�clenchera une erreur 'instruction ill�gale'.
Violation de privil�ge. Nous avons vu que le 68000 pouvait �vo-
luer en mode utilisateur ou en mode superviseur. On dit que l'�tat
superviseur est l'�tat privil�gi� (ou �tat de plus haut
privil�ge). Tenter d'acc�der en mode utilisateur � une zone m�-
moire r�serv�e au mode superviseur ou bien tenter d'ex�cuter une
instruction privil�gi�e (donc utilisable uniquement en supervi-
seur) provoquera une erreur 'violation de privil�ge'.
Conna�tre ces diff�rents types d'erreurs est tr�s important. En
effet la phase de mise au point est g�n�ralement longue en assem-
bleur, surtout au d�but. De tr�s nombreuses erreurs peuvent surve-
nir, dont la cause est parfois juste sous notre nez. Le type m�me
de l'erreur, si celle-ci est bien comprise, peut souvent suffire �
orienter les recherches plus pr�cis�ment et ainsi raccourcir le
temps (p�nible) de recherche du grain de sable qui bloque tout!
Tous les vecteurs constituant le premier kilo de m�moire ayant
pour but de d�router le programme principal vers une routine ex-
ceptionnelle, sont appel�s 'vecteurs d'exceptions'.
Les vecteurs restants seront �tudi�s dans les s�ries suivantes, au
fur et � mesure des besoins. Chaque chose en son temps!
Pour aujourd'hui nous nous arr�terons l�. Ce fut court mais le
prochain chapitre sera consacr� � la pile et sera bien gros!
La pile est un probl�me aussi simple que les autres, qui demande
simplement de l'attention. Apr�s avoir �tudi� ce qu'est la pile,
il ne nous restera plus qu'un demi-cours avant d'aborder nos pre-
miers 'gros' programmes!
Courage! mais surtout prenez votre temps! Relisez les cours pr�c�-
dent m�me si tout vous para�t compris. Plus nous avancerons plus
le nombre de petites choses augmentera et moins il y aura de place
pour la plus petite incompr�hension.
Back to ASM_Tutorial