|
Accueil Démo Exercices formatifs Travaux pratiques Simulation libre ❯
Sessions sauvegardées
|
Valeur absolue avec fonction et boucleEn utilisant la fonction valeurAbsolue, parcourir tous les éléments de la variable
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
|