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