lundi 28 juillet 2014

Le SR [fr]

Alors, petit point maintenant : comment trouvez-vous la dureté des cours ?

Svp, faites ce test : sur une échelle de 0 à 20 (0 étant ultra-simple et 20 hypra-difficile), à combien notez-vous la difficulté de ces tout premiers cours ?

Et bien sachez que le niveau de tous les suivants sera toujours aussi simple, vous pouvez peut-être rajouter 2 points à votre estimation... Vous contasterez par vous-même : le 68000 est très accessible pour la grande majorité des personnes...


Alors aujourd'hui, étudions le SR qui signifie Status Register en anglais. Il faut savoir que le SR fait un mot (donc 16 bits). Noté que l'octet composé des bits N° 0 à 7 est appelé le CCR pour Condition Code Register. Le CCR est automatiquement mis à jour par le CPU à chaque opération sur les registres de données et sur les accès mémoires que nous verrons la prochaine fois.

Les registres d'adresses ne sont pas concernées par le CCR, c'est une des différences entre les dx et ax dont je parlais dans un des articles précédents.

Il sert en fait à notifier un résultat particulier d'un calcul. Voici sa composition :
  • bit N° 0 : Carry (C)
  • bit N° 1 : oVerflow (V)
  • bit N° 2 : Zero (Z)
  • bit N° 3 : Negative (N)
  • bit N° 4 : eXtend (X)
  • bit N° 5 : inutilisé
  • bit N° 6 : inutilisé
  • bit N° 7 : inutilisé

  • bit N° 8 : Interrupt priority mask (I0)
  • bit N° 9 : Interrupt priority mask (I1)
  • bit N° 10 : Interrupt priority mask (I2)
  • bit N° 11 : inutilisé
  • bit N° 12 : Master/interrupt state (M)
  • bit N° 13 : Supervisor/user state (S)
  • bit N° 14 : Trace enable (T0)
  • bit N° 15 : Trace enable (T1)

Nous allons surtout expliquer le CCR dans ce cours, la suite pour un autre jour lorsque vous serez plus avancé...

Un exemple afin que vous compreniez mieux maintenant : lorsque nous bougeons une donnée immédiate dans un registre, le CPU "analyse" ce que vient d'être écrit dessus et modifie le CCR en fonction. Prenons donc :
move.l     #$00000000,d0

d0 va donc contenir zéro qui est un cas particulier parmi toutes les 4 294 967 296 possibilités qu'offre un long mot. Le CPU va donc mettre à 1 le bit N° 2 (Zero) du CCR.

 
Un autre exemple dans le même ordre d'idée :
move.w    #$8012,d0

$8012 = %1000 0000 0001 0010 = cas particulier aussi puisque nous avons bougé un mot (16 bits) qui a son bit N° 15 à 1. Nous avions vu que ce bit est spécial, car il indique le signe (-). Donc le CCR va avoir son bit N° 3 (Negative) à 1 ainsi que son bit N° 2 (Zero) à 0 puisque $8012 est différent de zéro.

Je vous invite bien sûr à vérifier ce que j'écris là par vous même avec AsmOne ! Prenons un registre d'adresse cette fois :
move.l    #$00000000,a0

n'a en rien modifié le CCR, comme vous le constatez sur cette photo :

Je vais vous montrer à quoi sert vraiment le CCR, mais avant un petit retour sur les adresses...
  

Aucun commentaire:

Enregistrer un commentaire