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

Valeur absolue avec fonction et boucle

En utilisant la fonction valeurAbsolue, parcourir tous les éléments de la variable tableau et remplacez-les par leur valeur absolue. Le tableau se termine lorsque la valeur « 0 » est rencontrée.

SECTION INTVEC

B main

SECTION CODE

main

; Préparer la pile
LDR SP, =pile
ADD SP, SP, #16

; Charger l'adresse de la variable tableau
LDR R1, =tableau

; Écrire le code ici
debutBoucle
; Charger l'élément de tableau
LDR R0, [R1]

; Vérifier si on a terminé (si l'élément est à 0)
CMP R0, #0
BEQ finBoucle

; Calculer la valeur absolue de l'élément
BL valeurAbsolue

; Stocker le résultat dans le tableau
STR R0, [R1]

; Passer à l'élément suivant
ADD R1, R1, #4

; Boucler
B debutBoucle

finBoucle

fin
B fin

; fonction qui calcule la valeur absolue
valeurAbsolue

PUSH {R1}

; Code qui implémente la valeur absolue : 
CMP R0, #0
BLT negatif

; il est déjà positif, donc il n'y a rien à faire
B finValeurAbsolue

negatif
; il est négatif, donc multiplier par -1
MOV R1, #-1
MUL R0, R0, R1

finValeurAbsolue
; fin de la fonction
POP {R1}
BX LR



SECTION DATA

tableau ASSIGN32 -1, 2, -10, 5, 0
pile ALLOC32 4

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 B main SECTION CODE main ; Préparer la pile LDR SP, =pile ADD SP, SP, #16 ; Charger l'adresse de la variable tableau LDR R1, =tableau ; Écrire le code ici fin B fin ; fonction qui calcule la valeur absolue valeurAbsolue PUSH {R1} ; Code qui implémente la valeur absolue : CMP R0, #0 BLT negatif ; il est déjà positif, donc il n'y a rien à faire B finValeurAbsolue negatif ; il est négatif, donc multiplier par -1 MOV R1, #-1 MUL R0, R0, R1 finValeurAbsolue ; fin de la fonction POP {R1} BX LR SECTION DATA tableau ASSIGN32 -1, 2, -10, 5, 0 pile ALLOC32 4

Instruction courante

Mémoire

Suivre PC
Cycle courant :