Activer
Type
cycles
cycles (premier)
Vitesse d'exécution : ms
Français
SECTION INTVEC
B main
NOP ; "no-operation", donc ne fait rien si cette instruction est rencontrée!
B interruptionLogicielle
; toutes les autres interruptions ne sont pas supportées
SECTION CODE
main
; Plaçons une valeur test dans R13 et R14
MOV R13, #0x13
MOV R14, #0x14
; Déclenchons une interruption logicielle
SVC #10
; Vérifions que l'interruption n'a pas modifié la valeur de R13 et R14
ASSERT R13=0x13,R14=0x14
; Déclenchons une autre interruption logicielle, pour voir si la valeur
; de R13_svc est toujours la même
SVC #10
B main
interruptionLogicielle
; début de la routine de traitement de l'interruption logicielle
; ici, les registres R13 et R14 sont « banqués », c'est-à-dire qu'ils
; sont différents de ceux que nous avions dans le code.
; vérifions que leur valeur n'est pas celle que nous avions placée ci-haut
; et modifions la valeur de R13_svc
MOV R13, #0x26
; nous devons faire attention de ne pas modifier R14_svc, car l'adresse
; de retour y est stockée!
; fin de la routine de traitement de l'interruption logicielle
SUBS PC, LR, #4
SECTION DATA