|
Accueil Démo Exercices formatifs Travaux pratiques Simulation libre ❯
Sessions sauvegardées
|
MaximumDévelopper un fonction
SECTION INTVEC
B main
; Vous pouvez ajouter des variables pour modifier la taille du tableau et tester votre fonction
tableau ASSIGN32 0xF3146A2A, 0xF65E02A3, 0x502B0A2C, 0xD53B0894, 0x0937AABA, 0xFAD3F6FB
SECTION CODE
; paramètre de la fonction max
; Entrée
; R0 : adresse du tableau
; R1 : nombre d'élement
; Sortie
; R0 : maximum du tableau
max
LDR SP, =maPile
ADD SP, SP, #0x28 ; On va au sommet de la pile
PUSH {R1, R2, R3, LR}
; R3 va contenir notre maximum
; On l'initialise à la plus petite valeur entière permise (en complément-2).
MOV R3, #0x80000000
boucle
CMP R1, #0x00
BEQ finfonction
LDR R2, [R0], #4
SUB R1, R1, #1 ; On décrémente le nombre d'élément
CMP R2, R3
MOVGT R3, R2 ; On a un nouveau maximum
B boucle
finfonction
MOV R0, R3 ; On met le maximum dans R0
POP {R1, R2, R3, LR}
BX LR
main
LDR R0, =tableau ; Adresse de début du tableau
MOV R1, #0x06 ; Nombre d'élément du tableau
BL max
LDR R2, =ecran
STR R0, [R2] ; Écriture du max absolue à l'écran
fin
B fin
SECTION DATA
maPile ALLOC32 10;
ecran ALLOC32 1;
|