jeudi 7 août 2014

Les labels (II) [fr]

Bon, finalement continuons avec les labels et une nouvelle instruction : lea !

Cette nouvelle mnémonique permet de placer l'adresse d'un label dans un registre d'adresse. Bien souvent, ce label est une donnée ou une suite de données de votre choix. Parfois, cela peut-être également une routine...

Pour signifier des données, il suffit d'employer dc.b/.w/.l (qui n'est pas une instruction) comme le montre cette photo :

Donc ici, le premier lea va mettre l'adresse _MonPremierProggy dans a1 et le deuxième l'adresse __MesDonnees dans le registre a2.

a1 va être l'adresse qui contient le move.l $00000000,d0 alors que a2 est le début de nos données. Les dc servent à signifier à AsmPro qu'il doit mettre vos données choisies à cet endroit, c'est tout.

Toujours vérifier mes dire avec le monitor d'AsmPro :

AsmPro et le Kickstart ont remplacé les labels par des adresses de façon automatique comme expliqué dans le précédent article. La colonne tout à gauche indique les adresses fastram dans lesquelles se trouvent notre petit programme : c'est le tube mémoire dont je parlais plus tôt dans ces cours. Ensuite, la deuxième nous montre les données contenues dans chacune de ces adresses. Et la troisième l'interprétation de ces données.

Alors, nos move et lea sont des instructions faites de lettres et chiffres compréhensibles pour les humains. Elles sont encodées (ou interprétées) par uniquement des 0 et des 1 par le CPU qui ne comprends que ça le pauvre. Ici, elles sont en hexadécimal car par convention, les adresses s'écrivent toujours en hexa : une suite de 32 zéros et uns serait trop compliquée à retenir ou interprêté pour nos cerveaux, l'hexa nous est bien utile ici pour simplifier les choses !
  • 203C encode move.l dans d0 et 00000000 à la donnée immédiate mot long
  • 303C encode move.w dans d0 et 8012 à la donnée immédiate mot
  • 207C encode move.l dans a0 et 00000000 à la donnée immédiate mot long
  • 43F9 encode lea dans a1 et 0A01D2A4 (_MonPremierProggy) à l'adresse de départ
  • 45F9 encode lea dans a2 et 0A1D2C0 (__MesDonnees) à l'adresse de nos données
  • CAFECAFE aucun encodage puisque dc = donnée, pas une instruction encodée
  • 1111 aucun encodage
  • FF aucun encodage

Là encore l'encodage est automatique par AsmPro. Je vous explique le principe de fonctionnement, vous n'avez qu'à apprendre les mnémoniques.

Voilà, à vous de bien cogiter ce nouvel article maintenant !
  

Aucun commentaire:

Enregistrer un commentaire