Obligement - L'Amiga au maximum

Mardi 12 décembre 2017 - 07:26  

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


Contact

David Brunet

Courriel

 


Programmation : Assembleur - les bases
(Article écrit par Jérome Marchal - septembre 1999)


C'est quoi l'assembleur ?

L'assembleur est le langage de programmation par excellence. Vous connaissez certainement le BASIC. Sur Amiga, les trois BASIC principaux sont : AMOS, Blitz Basic et HiSoft Basic. Quand vous programmez en BASIC, vous utilisez des instructions texte évidentes telles que print (imprimer) qui sont ensuite soit compilées soit interprétées. Le problème est qu'à part les instructions fournies dans le BASIC, vous ne pouvez pas vraiment faire ce que vous voulez.

La programmation en assembleur est totalement différente. Grâce à elle, il vous est possible de faire n'importe quoi. Vous n'utilisez plus que des instructions préfabriquées... Au contraire, vous allez directement taper dans le matériel de l'Amiga pour faire votre programme. On comprend vite pourquoi les programmeurs de démos ont choisi l'assembleur : au lieu d'utiliser de lentes instructions de BASIC, ils peuvent aller bidouiller chaque composante de la carte mère de l'Amiga pour faire de la 3D toujours plus rapide et plus bourrine.

Les registres

Bon, pour coder en assembleur, il faut que vous compreniez bien une chose essentielle. Quoi que vous vouliez faire, vous allez forcément utiliser les registres. D'un côté, on a les registres d'adressages et de l'autre, les registres de données.
----------------------------
Registres         Registres
d'adressage       de données
----------------------------
A(0)              D(0)
A(1)              D(1)
A(2)              D(2)
A(3)              D(3)
A(4)              D(4)
A(5)              D(5)
A(6)              D(6)
----------------------------
1) Les registres d'adressages

Ces derniers servent à stocker des adresses... Sans déconner ? Par exemple, si vous ouvrez une bibliothèque, vous stockez son adresse au hasard en A(6). Les registres d'adresses sont au nombre de 7 à savoir de A(0) a A(6).

2) Les registres de données

Idem que les registres d'adressages : Au nombre de 7 (de D(0) a D(6)), ils servent à stocker des données numériques ou textuelles.

Exemples siou plait m'sieur !

Bon, puisque vous insistez lourdement, je vais vous donner des petits exemples... On ne va pas voir ici un programme complet, mais juste des instructions au hasard pour vous instruire un peu.

Bouge de là...

Bon, je vous ai parlé des registres de données et d'adressages. Maintenant, on va voir comment on peut déplacer le contenu de D(0) en D(4).

move D(0),D(4)

Et ouaip, ce n'est pas plus compliqué que ça. Move est l'instruction qui sert à déplacer et on lui précise ici que c'est le contenu de D(0) qui bouge en D(4). Et si on voulait déplacer le contenu du registre d'adressage A(5) en A(3) ?

move A(5),A(3)

Autrement dit, l'instruction est exactement la même sauf qu'on remplace nos deux registres de données (D(0) et D(4)) par deux registres d'adressages (A(5) et A(3)).

Va voir ailleurs si j'y suis

Bon, si vous voulez vous mettre à l'assembleur, c'est que vous avez sûrement déjà un peu touché au BASIC. En BASIC, on utilise une instruction toute bête pour aller à un endroit du programme : GOSUB. En assembleur, cette instruction existe aussi mais ne possède pas le nom, c'est JSR. De la même manière que le BASIC, on place des étiquettes dans le code et on peut s'y rendre quand on veut. Aller, trève de blabla, un exemple :

-Rulez
JSR   -AcidOZine
move  d(1),d(4)
-AcidOZine
JSR   -Rulez

Bon, dans l'exemple à la con que je viens de faire, on utilise deux instructions différentes : move dx,dx que l'on a vu précédemment et JSR -XXX que l'on est en train de voir. A savoir que JSR, c'est les initiales de "Jump to Sub Routine" qui veut dire saute à la sous-routine dont le nom est placé juste après JSR.

Pour en venir à ce petit programme : la première ligne est une étiquette. La deuxième ligne dit à l'ordinateur de sauter à la sous-routine -AcidOZine. La troisième ligne déplace le contenu de d(1) en d(4). La quatrième est l'étiquette -AcidOZine et la cinquième dit de sauter à l'étiquette -Rulez. Donc, dans le concret, l'ordinateur passe la première ligne puis en obéissant aux ordres de JSR, saute à l'étiquette -AcidOZine. Arrivé là, il rencontre une autre instruction JSR qui lui dit d'aller à l'étiquette -Rulez et il recommence à l'infinie sans jamais s'arrêter... Et notre instruction move, là dedans, elle sert à quoi ? Eh bien à rien puisque l'on saute par dessus, mais ça faisait plus "style" avec move entre les deux.
INSTRUCTIONS      ÇA SERT A QUOI
------------------------------------------
ADD               Addition
ADDA              Addition avec résultat
                  Stocke en aX
AND               Et logique
SUB               Soustraction
JSR               Saut à une sous-routine
MOVE              Déplacer
MOVEQ             Déplacer vite
OR                Ou
TST               Test
------------------------------------------
Conclusion

Bon, je vais m'arrêter là pour cet article-ci. En attendant, mattez les deux tableaux et essayer de bien cogiter tout ça pour la prochaine fois... car les choses sérieuses vont bientôt commencer !


[Retour en haut] / [Retour aux articles]