Pour accéder à une donnée, en sachant que la première en haut à gauche porte le numéro 0, il suffit d'additionner à l'adresse de départ du tableau le résultat de la multiplication du numéro de la valeur voulue par la taille des valeurs du tableau.
<adresse valeur>=<adresse table>+<numéro valeur x>*<taille>+<numéro valeur y>*<taille>*<nombre de valeur en x>
PROGRAMMATION
|
; pour enregistrer une valeur |
|
; nous considérons que la matrice est constitué de 4 colonnes et 2 lignes |
LEA dimension_deux(PC),A0 |
; on charge l'adresse de la table dans A0 |
MOVE.l #2,D0 |
; on veut la valeur sur la 3ème colonne... |
MOVE.l #1,D1 |
;... on veut la valeur sur la 2ème ligne |
MULU #8,D1 |
; on multiplie y par le nombre d'éléments en x (ici 4*2 octets) |
ADD D1,A0 |
; on saute du nombre de ligne voulu |
MOVE.w $3F25,0(A0,D0) |
; on enregistre la valeur $3F25 aux coordonnées (3,2) |
|
; dans les variables |
dimension_deux dc.w $7A92,2E10,A38B,547E,98A2,5F22,62E7,8A99 |
PROGRAMMATION
|
; pour lire une valeur |
|
; nous considérons que la matrice est constitué de 4 colonnes et 2 lignes |
LEA dimension_deux(PC),A0 |
; on charge l'adresse de la table dans A0 |
MOVE.l #2,D0 |
; on veut la valeur sur la 3ème colonne... |
MOVE.l #1,D1 |
;... on veut la valeur sur la 2ème ligne |
MULU #8,D1 |
; on multiplie y par le nombre d'éléments en x (ici 4*2 octets) |
ADD D1,A0 |
; on saute du nombre de ligne voulu |
MOVE.w 0(A0,D0),D2 |
; on enregistre le contenu de la valeur (3,2) dans D2 |
|
; dans les variables |
dimension_deux dc.w $7A92,2E10,A38B,547E,98A2,5F22,62E7,8A99 |
|