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

Valeur absolue avec fonction

Placez le code fourni, qui calcule la valeur absolue de R0, dans une fonction. Cette fonction se nomme valeurAbsolue, prend l'argument en entrée dans R0, et stocke le résultat dans R0 également. Elle ne devrait modifier aucun autre registre.

SECTION INTVEC

B main

SECTION CODE

main

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

; test de la fonction
MOV R0, #-10
BL valeurAbsolue

fin
B fin

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

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 ; test de la fonction MOV R0, #-10 BL valeurAbsolue fin B fin ; 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 SECTION DATA pile ALLOC32 4

Instruction courante

Mémoire

Suivre PC
Cycle courant :