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

Maximum

Développer un fonction max qui prend 2 paramètres en entrée : R0 qui représente l'adresse du tableau et R1 qui représente le nombre d'éléments dans le tableau. La fonction max retourne le maximum dans R0. De plus, on vous demande d'écrire ce maximum en mémoire dans la variable ecran. Faites vos calculs en arithmétique signée (complément-2).

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;

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 ; 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 main fin B fin SECTION DATA maPile ALLOC32 10; ecran ALLOC32 1;

Instruction courante

Mémoire

Suivre PC
Cycle courant :