Obligement - L'Amiga au maximum

Samedi 18 novembre 2017 - 05:43  

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 - modes d'adressage indexés
(Article écrit par Little Zeus et extrait d'A-News (Amiga News) - janvier 1989)


Chers Amiga-beginners, j'ai deux nouvelles à vous annoncer, une bonne et une mauvaise.

La bonne : voici le temps pour vous de devenir des Amiga-Users ; après les modes d'adressage absolus et immédiats, nous voyons maintenant les différents modes d'adressage indexés. Nous illustrerons ce mode par une petite routine qui aura pour but de retourner une image ou autrement dit, de produire un effet de miroir.

La mauvaise nouvelle : Little Zeus a le regret d'informer ses chers lecteurs de son départ, mais celui-ci n'est pas définitif. Pour l'instant, je suis encore là, donc commençons.

Mode d'adressage indirect

Le mode d'adressage indirect peut se trouver sous trois formes : la première consiste à prendre le contenu du contenu d'un registre d'adresse pour le mettre dans une case mémoire ; le second consiste à mettre une valeur dans le contenu du contenu du registre d'adresse ; enfin, le troisième combine les deux précédents et met le contenu du contenu d'un registre d'adresse dans le contenu du contenu d'un autre.

Tout ceci doit paraître un peu vague ; pour remédier à cela, appuyons-nous sur un exemple : Move.l #10,a0 Move.l #20,(a0). Première chose à remarquer, le mode d'adressage indirect se reconnaît par les deux parenthèses qui sont placées de part et d'autre du registre d'adresse concerné. Deuxième chose, la séquence précédente est équivalente à Move.l #20,10. Mais alors, pourquoi utiliser un mode d'adressage qui nécessite deux fois plus de lignes qu'un autre ? La réponse émergera lorsque nous étudierons la routine qui renverse les images.

Un deuxième exemple : Move.l #5,10 Move.l #10,a0 Move.l #20,a1 Move.l(a0),(a1) est équivalent à Move.l #5,20.

Les options du mode d'adressage indirect

Le mode d'adressage indirect possède différentes options ; nous en verrons trois : l'indirect postincrémenté, l'indirect prédécrémenté et enfin l'indirect avec déplacement.

Les deux premiers modes sont très utiles dans des boucles, le postincrémenté incrémente, comme son nom l'indique, le contenu du registre après avoir fait le transfert : Move.l #10,(a0)+ est équivalent à Move.l #10,(a0) Add.l #4,a0. Attention, Move.w #10,(a0)+ est équivalent à Move.w #10,(a0) add.l #2,a0. Nous noterons par conséquent que la postincrémentation est fonction de la longueur de l'adressage utilise (octet, mot ou long mot).

Le principe de la prédécrémentation est assez similaire sauf qu'au lieu d'incrémenter on décrémente et cette decrémentation se fait avant le transfert. Un exemple : Move.l #10,-(a0) est équivalent à Sub.l #4,a0 Move.l #10,(a0).

Enfin, l'adressage avec déplacement ajoute une valeur au contenu du registre d'adresse (des exemples sont donnés dans la routine ci-dessous).

La routine

Passons à la routine proprement dite, son principe est le suivant : nous allons successivement prendre mot par mot les données d'une image chargée en mémoire à partir de l'adresse "picdata", ensuite, nous les mettrons successivement dans les bitplanes, et ce ligne par ligne. Il apparaît donc évident que nous allons devoir prendre les bitplanes à l'envers, C'est-à-dire de l'adresse de poids le plus fort à l'adresse de poids le plus faible.

Assembleur

Nous allons maintenant utiliser à la fois les modes d'adressage indirects indexés avec postincrémentation et déplacement. On utilise le premier pour pointer automatiquement sur le mot suivant et le second à cause de la structure de l'image IFF qui fait se succéder 40 mots du bitplane 1, 40 mots du bitplane 2 et ainsi de suite (pour plus d'informations, rapportez-vous à l'article sur l'image IFF).

Assembleur

Pour rendre cette routine opérationnelle, il suffit de substituer la routine précédente aux lignes qui affichent l'image normalement (prenons par exemple la routine dans l'article sur l'image IFF et modifions-là comme précédemment dit !).

Ainsi s'achève cet article tout particulièrement consacré aux débutants. Maintenant, vous, ex-débutants vous êtes en mesure de reprendre les routines des numéros précédents et de les comprendre mieux, voire complètement !


[Retour en haut] / [Retour aux articles]