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

Attente

Développer une routine d'interruption Attente qui attend 20 cycles avant de retourner dans le programme principal à chaque interruption de type IRQ. Vous devez aussi écrire le vecteur 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;

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 ; Vecteur d'interruption ici B main SECTION CODE attente ; Exécute 20 instructions (20 cycles) et termine. 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;

Instruction courante

Mémoire

Suivre PC
Cycle courant :