Accueil Démo Exercices formatifs Travaux pratiques Simulation libre ❯
Sessions sauvegardées
|
AttenteDévelopper une routine d'interruption Pour tester les interruptions de type IRQ, vous devez les activer dans le panneau «Configurations» (dans l'onglet «Simulation»). SECTION INTVEC ; Vecteur d'interruption ici B main NOP NOP NOP NOP NOP B attente SECTION CODE attente ; Exécute 20 instructions (20 cycles) et termine. ; Utilisons une boucle pour le faire. ; Comme l'interruption IRQ n'a pas de registres banqués, nous allons devoir ; utiliser une pile pour sauvegarder le registre utilisé comme compteur ; dans la boucle (R0). ; Pour ce faire, on initialise la pile tout d'abord LDR SP, =PileAttente ADD SP, SP, #40 ; Va au sommet de la pile PUSH {R0} ; Sauvegarde du contexte ; Compteur de boucle initialisé à 0 MOV R0, #0 ; il y a 5 instructions hors de la boucle, donc la boucle doit effectuer ; (20-5=15) instructions boucle ; Chaque boucle utilise 3 instructions, donc on doit la faire 5 fois ADD R0, R0, #1 CMP R0, #5 BNE boucle POP {R0} ; Restaure le contexte SUBS PC, LR, #4 ; On reprend le programme principal main ADD R7, R7, #1 MOV R6, R7 MOV R5, R6 MOV R4, R5 MOV R3, R4 MOV R2, R3 MOV R1, R2 MOV R0, R1 B main SECTION DATA PileAttente ALLOC32 10;
|