Écrivons un programme qui copie le contenu d'un tableau source vers un tableau destination.
Questions et réponses:
Quelle est l'adresse de source? L'adresse de source est 0x1000.
Quelle est l'adresse de destination? L'adresse de destination est 0x100C.
Pouvons-nous faire des copies mémoire-mémoire? Non, il n'existe pas d'instructions pour effectuer cette opération. Il faut donc passer par les registres du micro-processeur.
Combien d'octets faut-il rajouter à l'adresse? Comme chaque élément dans le tableau occupe 32 bits, il faut rajouter 4 octets (rappel: 1 octet = 8 bits) pour passer au prochain élément.
Activer
Type
cycles
cycles (premier)
Vitesse d'exécution : ms
Français
SECTION INTVEC
B main
SECTION CODE
main
; Chargeons l'adresse de source
; Question: quelle est l'adresse de source?
LDR R0, =source
; Chargeons l'adresse de destination
; Question: quelle est l'adresse de destination?
LDR R1, =destination
; Copions les éléments uns à uns
; Question: pouvons-nous faire des copies mémoire-mémoire?
LDR R2, [R0]
STR R2, [R1]
; Passons à l'élément suivant.
; Combien d'octets faut-il rajouter à l'adresse pour
; passer au prochain élément dans le tableau?
ADD R0, R0, #4
ADD R1, R1, #4
LDR R2, [R0]
STR R2, [R1]
; Passons au dernier élément
ADD R0, R0, #4
ADD R1, R1, #4
LDR R2, [R0]
STR R2, [R1]
; Nous avons terminé!
fin
B fin
SECTION DATA
; Tableau source de 3 éléments. Les éléments sont connus a priori.
source ASSIGN32 0x48, 0x65, 0x6C
; Tableau de destination de 3 éléments, inconnus a priori.
destination ALLOC32 3