Accueil
Démo
Exercices formatifs
Travaux pratiques
Simulation libre
Sessions sauvegardées

Tableaux

Soient deux tableaux, le tableau_lecture contenant des données et le tableau_ecriture, le tableau cible qui doit contenir les données.

Écrivez un programme qui copie le contenu de tableau_lecture dans le tableau_ecriture, mais avec les données dans le sens inverse.

SECTION INTVEC

B main

SECTION CODE
tableau_lecture ASSIGN32 0x0D, 0x0C, 0x0B, 0x0A

main
LDR R0, =tableau_lecture
LDR R1, [R0], #4
LDR R2, [R0], #4
LDR R3, [R0], #4
LDR R4, [R0]
LDR R0, =tableau_ecriture
STR R4, [R0], #4
STR R3, [R0], #4
STR R2, [R0], #4
STR R1, [R0]

fin
B fin

SECTION DATA
tableau_ecriture ALLOC32 4
Autre solution possible (avec une boucle cette fois). Cette solution est plus compliquée et nécessite une compréhension des branchements et des énoncés conditionnels.
SECTION INTVEC

B main
tableau_lecture ASSIGN32 0x0D, 0x0C, 0x0B, 0x0A
SECTION CODE

main

LDR R0, =tableau_lecture
LDR R1, =tableau_ecriture

; on commence à la fin du tableau d'écriture, qui contient 4 éléments
; on incrémente donc l'adresse de base de 12 (3x4 octets)
ADD R1, R1, #12

; compteur pour savoir quand s'arrêter
MOV R2, #4

boucle
LDR R3, [R0], #4  ; lecture de l'élément, incrémentation de l'adresse
STR R3, [R1], #-4 ; écriture de l'élément, décrémentation de l'adresse
SUBS R2, R2, #1
BGT boucle

; terminé
fin
B fin

SECTION DATA
tableau_ecriture ALLOC32 4

Registre Généraux (User)

Nom Valeur
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13 (sp)
R14 (lr)
R15 (pc)

Registre Généraux (FIQ)

Nom Valeur
R0
R1
R2
R3
R4
R5
R6
R7
R8 FIQ
R9 FIQ
R10 FIQ
R11 FIQ
R12 FIQ
R13 FIQ (sp)
R14 FIQ (lr)
R15 (pc)

Registre Généraux (IRQ)

Nom Valeur
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13 IRQ (sp)
R14 IRQ (lr)
R15 (pc)

Registre Généraux (SVC)

Nom Valeur
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13 SVC (sp)
R14 SVC (lr)
R15 (pc)

État courant

 CPSRSPSR
Negatif (N)
Zero (Z)
Retenue (C)
Dépassement (V)
Ignore IRQ
Ignore FIQ

Configurations

Interruptions

Activer
Type
 cycles
 cycles (premier)
Vitesse d'exécution :  ms

Français

SECTION INTVEC B main tableau_lecture ASSIGN32 0x0D, 0x0C, 0x0B, 0x0A SECTION CODE main SECTION DATA tableau_ecriture ALLOC32 4

Instruction courante

Mémoire

Suivre PC
Cycle courant :