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.
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