http://micropic.free.fr
L'adressage indirect
Dans cette page , nous allons voir le fonctionnement de l'adressage indirect des Pics
Il fait appel à deux registres : INDF et FSR.

FSR ( File Selection Register ) contient l'adresse mémoire à accéder
INDF ( INDirect File ) contient la valeur présente à l'adresse mémoire pointée par FSR

Un exemple basique :

MOVLW H'20' ; adresse memoire
MOVWF FSR ; FSR pointe maintenant sur l'adresse memoire H20
MOLW D'15' ; on met 15 dans W
MOVWF INDF;

Ecrire dans INDF revient à écrire à l'adresse pointée par FSR
Dans l'exemple précédent , nous avons écris la valeur décimale 15 à l'adresse hexadécimale 20 ( qui représente le début de la ram utilisateur )

L'example précedent n'apporte que peu d'intérêt ( hormis celui de l'explication ).
Cela devient beaucoup plus utile quand on veut modifier toute une serie d'adresse mémoire.

Voici un exemple pratique : la remise à zéro de 16 variables ( situées entre H'20' et H2F' ) :

MOVLW D'16'
MOVWF compteur ; compteur est le nombre de variables à initialiser
MOVLW H'20'
MOVWF FSR ; FSR pointe maintenant sur l'adresse H'20'
CLRF INDF; on efface l'adresse pointée par FSR
INCF FSR ; FSR pointe maintenant sur l'adresse suivante
DECFSZ compteur
GOTO $-3 ; on boucle 3 lignes plus haut
fin

nota : dans le programme précédent , on note l'utilisation de $.
$ represente la ligne actuelle du programme en cours.
$-1 représente la ligne précédente
$-2 représente 2 lignes avant
etc ....

dans le cas du programme décris plus haut , GOTO $-3 fera continuer le programme 3 lignes plus haut , donc à la ligne ou se trouve 'CLRF INDF'


© 1999-2004 Philippe Brégea