vendredi 25 juillet 2014

Move [fr]

Faisons connaissance maintenant avec l'instruction move (ou mnémonique, les deux mots décrivent la même chose). Traduite en français, elle signifie bouger. Elle sert donc tout simplement à déplacer des données d'un endroit à un autre.

Voyons son utilisation : comme bon nombre d'instructions, elle s'utilise de la façon suivante :
espace
tabulation move <forme de la source> tabulation <source>,<destination>
espace

Alors, plus de précisions :
  • espace = ligne vide
  • tabulation = toujours appliquer ici une tabulation (touche Tab sur votre clavier)
  • <forme de la source> = soit .b, .w ou .l pour octet, mot ou long mot
  • tabulation = encore ici une tabulation
  • <source> = donnée que vous voulez transférer
  • , = virgule
  • <destination> = la donnée source atterrira alors ici

Prenons un exemple bien concret maintenant avec un cas particulier de move à valeur immédiate. Pour ceci, il faut utiliser # avant la source qui va signifier au CPU que vous voulez utiliser une donnée de votre choix juste après.
move.l    #$FFFFFFFF,d0

va donc écrire le long mot $FFFFFFFF dans le registre de données d0 :

Amusons-nous maintenant à bien comprendre tout ceci avec d'autres exemples aussi simple :
move.w    #$1111,d0

va donc bouger le mot $1111 dans d0. Seule la partie mot (c'est à dire les bits N° 0 à 15) va étre modifié dans la destination d0.

Ensuite, ce nouveau move :
move.b    #$55,d0

va donc bouger l'octet $55 dans d0. Seule la partie octet (c'est à dire les bits N° 0 à 7) va être modifié dans la destination d0.

Le résultat de ces trois instructions sera donc $FFFF1155 :

Je vous invite à découvrir par vous même le résultat de ces trois move consécutifs. Il suffit de prendre AsmOne (ou AsmPro comme sur les photos, qui est une version améliorée du premier) et de taper les trois mnémoniques dans l'éditeur.

Toujours bien mettre les tabulations aux bons endroits ainsi qu'un espace entre chaque instruction pour un maximum de clarté. Ensuite avec la souris, se rendre dans le débugger et tracer le petit programme avec la touche flèche bas. Tracer signifie que vous allez exécuter une à une les mnémoniques et voir en temps réel le résultat dans les registres.

Pour finir, bougeons tout le contenu du registre d0 dans d1 :
move.l    d0,d1

Ici sans # : pas de valeur immédiate en source mais juste d0. Notez que la source n'est jamais modifiée par le CPU : d0 restera bien d0. Seule d1 la destination sera modifiée :

Allez, un peu de pratique : à vous de jouer avec AsmOne !
   

Aucun commentaire:

Publier un commentaire