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

TP2: Initiation à l'assembleur ARM (code)

Étape 2: code

L'onglet « Simulation » ci-haut contient une ébauche de code ainsi que 5 questions. Écrivez votre code sous chacune des questions.

Important: Votre code ne doit pas contenir d'instructions relatives à PC. Utilisez plutôt les mécanismes d'adressage de variables (LDR R0, =variable, ...) ou les instructions de branchement (B, BEQ, ...) si nécessaire.

Lorsque vous avez terminé, téléchargez tout d'abord votre fichier source.txt sur votre ordinateur grâce au bouton « sauvegarder » dans le simulateur, puis téléversez ce même fichier dans la boîte de dépôt qui est disponible sur le portail des cours.

Liens importants

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 de la table des vecteurs d'interruption SECTION INTVEC B main codeDuTp ASSIGN32 0x210000EA tableauDuTp ASSIGN32 0xF,0xF0,0xF00,0xF000,0x0 tableau2DuTp ASSIGN32 0x5,0x50,0x500,0x5000,0x5,0x0 ; Ne pas enlever cette ligne : ${TEST_5_DATA} ; Section du code principal SECTION CODE variableDuTp ASSIGN32 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF main ; Question 1 ; Écrivez un programme qui écrit la valeur 0xAB (sur 32 bits) ; à l'adresse 0x84 en mémoire. ; ; Important: n'utilisez pas d'instructions relatives à PC. ; ; Écrivez votre réponse ici: ; Ne pas enlever cette ligne: ${TEST_1} ; Question 2 ; Écrivez un programme qui: ; 1. Déclare une variable «maVariableAssignee» sur 32 bits et lui assigne ; la valeur 0x12345678. Placez cette variable dans la section DATA ci-bas. ; 2. Lit cette variable et lui soustrait 0x70. ; 3. Stocke le résultat dans «maVariableAssignee». ; ; Important: ; 1. N'utilisez pas d'instructions relatives à PC. ; 2. La variable «maVariableAssignee» doit être le premier élément de la ; section DATA ; ; Écrivez votre réponse ici: ; Ne pas enlever cette ligne: ${TEST_2} ; Question 3 ; Écrivez un programme qui: ; 1. Déclare une variable «maVariableAllouee» sur 32 bits sans lui attribuer de ; valeur. Placez cette variable dans la section DATA ci-bas, *en-dessous* ; de «maVariableAssignee» de la question 2. ; 2. Copie le contenu de la mémoire à l'adresse 0 dans cette variable. ; ; Important: n'utilisez pas d'instructions relatives à PC. ; ; Écrivez votre réponse ici: ; Ne pas enlever cette ligne: ${TEST_3} ; Question 4 ; Écrivez un programme qui: ; 1. Charge le contenu de la mémoire à l'adresse 0x0 dans R0 ; 2. Charge le contenu de la mémoire à l'adresse 0x8 dans R1 ; 3. Place 1 dans R7 si le contenu de R0 est égal à celui de R1, ; et 2 s'il ne l'est pas. ; ; Important: n'utilisez pas d'instructions relatives à PC. ; ; Écrivez votre réponse ici: ; Ne pas enlever cette ligne: ${TEST_4} ; Question 5 ; Écrivez un programme qui calcule la somme des éléments d'un tableau ; jusqu'à ce qu'il rencontre la valeur « 0 », ce qui indique la fin du tableau. ; Le programme stocke ensuite le résultat dans R8. ; Important: ; 1. Vous *devez* utiliser une boucle. ; 2. Pour les branchements, utilisez l'instruction Branch (B, BEQ, etc.) ; plutôt que d'affecter une valeur à PC (ex: MOV PC, ...) ; 3. Votre code doit boucler jusqu'à ce qu'il rencontre la valeur 0. ; 4. Testez votre code sur les deux tableaux fournis. La seule modification ; nécessaire devrait être le choix de la variable dans la ligne suivante : LDR R0, =tableauDuTp ; LDR R0, =tableau2DuTp ; retirez le commentaire pour tester avec tableau2DuTp ; Ne pas enlever cette ligne: ${TEST_5_PRE} ; Écrivez votre réponse ici: ; Ne pas enlever cette ligne: ${TEST_5} ; Fin du programme fin B fin ; Section des données SECTION DATA ; Écrivez vos variables maVariableAssignee et maVariableAllouee ici: END

Instruction courante

Mémoire

Suivre PC
Cycle courant :