Obligement - L'Amiga au maximum

Mardi 23 mai 2017 - 16:39  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Programmation : Assembleur - l'instruction "Move"
(Article écrit par Little Zeus et extrait d'A-News (Amiga News) - octobre 1988)


Continuons sur la lancée du mois dernier. Rappelons brièvement qu'en gros, l'assembleur consistait en un échange de valeurs entre différentes cases mémoires et que, pour ceci, nous utilisons l'instruction de base, Move.

Move

Eh oui, c'est grâce à elle que nous pourrons faire "transiter" des variables entre différentes adresses. Elle nous permettra tout aussi bien de prendre des valeurs d'autre part ; expliquons-nous :

Voyons en premier lieu ce que nous voulons dire par "transiter" (traduction du verbe "to move"). Ce mot est en fait inapproprié au contexte et "copier" serait plus juste. En fait, "MOVE $100,d0" ne prend pas la valeur comprise en $100 pour la mettre en d0, mais MOVE copie le contenu de $100 en d0, c'est-à-dire qu'en admettant qu'il y ait 4 en $100, après l'exécution de cette instruction, le chiffre 4 sera aussi bien en $100 qu'en d0 et malgré ce que nous aurions pu croire, la case $100 ne s'est pas vidée au profit de d0. Peut-être, trouverez-vous que j'insiste inutilement, mais il est primordial que cette notion soit bien comprise.

$ et #

Attention à ne pas confondre "MOVE $100,d0" avec "MOVE #100,d0" : un caractère changé et les effets ne sont plus les mêmes. Dans le dernier cas, nous écrasons l'ancien contenu de d0 pour y mettre la valeur #100 et veuillons noter que 100 est un nombre décimal dans la mesure où il est nullement précédent d'un "$" qui aurait alors voulu dire que nous avions à faire à un hexadécimal. Si nous avions voulu y mettre $100, nous aurions écrit MOVE #$100,d0. Nous venons en fait de voir, sans le savoir, deux modes d'adressages qui portent respectivement les noms d'adressages absolus et immédiats. Précisons que chacun de ces modes possède différents modes d'utilisation. En ayant dit précédemment que "MOVE $100,d0" recopiait la valeur comprise dans $100 en d0, nous avons été imprécis ; il aurait mieux valu dire que l'instruction recopiait les valeurs comprises en $100 et $101 en d0, c'est-à-dire que MOVE agit sur deux octets.

Il apparaît donc évident que l'instruction MOVE agit par défaut sur deux octets. Nous pourrions penser, que comme l'Amiga est un 16/32 bits (c'est-à-dire qu'il peut traiter des informations ayant jusqu'à 32 bits de longueur) MOVE pourrait peut-être traiter plus d'un mot à la fois et nous aurions raison car elle peut tout aussi bien traiter quatre octets à la fois (un long mot) qu'un seul.

Il faut néanmoins préciser à la machine quel type de variable elle doit traiter et pour cela, nous faisons suivre l'instruction MOVE de ".W" pour un mot (facultatif), de ".L" pour un long mot et de ".B" pour un octet.

d0

Mais au fait, ne faudrait-il pas préciser que d0 n'est pas une case mémoire comme toutes les autres ? Eh oui, elle fait partie des registres internes à l'Amiga. Les huit registres commençant par "d" et suivi d'un chiffre compris entre 0 et 7 font partie des registres de données. Ceux-ci ont une longueur de 32 bits contrairement aux cases mémoires habituelles.

Pourquoi, me demanderez-vous, ces registres existent-ils ? En fait, ils permettent certaines opérations que les cases mémoires usuelles ne nous offrent pas comme par exemple ce que nous avons vu précédemment, le fait de copier un contenu d'une case à une autre. Nous verrons plus exactement leurs rôles très prochainement.

Récapitulatif

Nous allons récapituler tout ceci par un petit tableau afin que cela soit clair dans nos esprits.

Immédiat Absolu
octet lmove.b #valeur, destinationl move.b départ, arrivée
mot lmove.w #valeur, destination lmove.w départ, arrivée
long motlmove.l #valeur, destination lmove.l départ, arrivée

Vérifions que nous avons tout bien assimilé : après un "MOVE.L #$FFFFFFFF,d0" suivi de "MOVE.B #$12,d0". Quel est alors le nouveau contenu de d0 ? J'entends $12 ! Non, le nouveau contenu de d0 est "$FFFFFF12". Si on voulait maintenant avoir $12 en d0, il faudrait faire un "MOVE.L #$12,d0".

Instructions ADD et SUB

Les instructions ADD, qui s'occupent des additions, et SUB, qui s'occupe de la soustraction, procèdent exactement de la même façon que MOVE. Par exemple "MOVE.L #52,d0" suivi de "ADD.L #$3,d0" additionnera $3 au contenu de d0, en l'occurrence, $2+$3 et on aura à la suite de ces deux instructions, le nombre $5 en d0. Nous verrons cela plus précisément le mois prochain.

A la prochaine

Ce que nous venons de voir jusqu'à présent peut paraître très théorique mais nous ne pouvons malheureseusement pas faire une routine sans avoir les éléments de base. Ne nous inquiétons tout de même pas, dès le prochain numéro, nous taperons notre première routine en assembleur qui possédera un intérêt certain.


[Retour en haut] / [Retour aux articles]