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

Compteur de uns

Implémentation de la fonction "compteUns" tel que présentée durant la révision de l'examen partiel. Voir le code pour les détails sur cette fonction.

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 compteUns ; Cette fonction reçoit dans R4 le nombre à traiter ; Elle doit retourner dans R5 le nombre de '1' dans la représentation ; binaire de R4. Par exemple, si R4 = 0000 ... 0101, alors R5 doit valoir 2 ; Aucun autre registre ne doit être modifié par cette fonction ; ; Idée générale : on utilise un masque avec un seul bit à 1, ; que l'on décale vers la gauche au fur et à mesure ; Si le AND entre ce masque et R4 n'est pas 0, alors c'est qu'il ; y avait un 1 à cette position dans R4, on incrémente alors R5 PUSH {R1,R2,R4} MOV R1, #1 ; R1 sera utilisé comme masque MOV R5, #0 ; R5 contient la réponse (le nombre de '1' dans la représentation binaire de R4) boucle ANDS R2, R4, R1 ; Equivalent à AND R2, R4, R1 suivi de CMP R2, #0 ADDNE R5, R5, #1 ; S'il y a un '1' à cette position, on incrémente R5 LSLS R1, R1, #1 ; Equivalent à LSL R1, R1, #1 suivi de CMP R1, #0 BNE boucle ; Après 32 LSL, la valeur de R1 sera de 0 ; Si ce n'est pas le cas (condition NE) c'est qu'on n'a pas encore terminé POP {R1,R2,R4} BX LR main ; On prépare la pile LDR SP, =pile ADD SP , SP , #20 ; Tests de la fonction compteUns MOV R4, #17 BL compteUns MOV R4, #0 BL compteUns MOV R4, #61 BL compteUns MOV R4, #-2 BL compteUns B main ; Section des donnes SECTION DATA pile ALLOC32 5 END

Instruction courante

Mémoire

Suivre PC
Cycle courant :