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

Multiplication

Développez la fonction Multiplication qui effectue une multiplication entre R0 et R1 et qui stocke le résultat dans R0. Pour cette fonction, vous ne pouvez pas utiliser MUL. Testez votre programme avec des valeurs différentes. Par exemple, qu'arrive-t-il si le contenu de l'un des deux registres d'entrée est 0?

SECTION INTVEC

B main

SECTION CODE

main
LDR SP, =maPile
ADD SP, SP, #40

; Préparons deux valeurs à multiplier, par exemple 2 et 5. 
MOV R1, #0x02
MOV R0, #0x05

; Appel de la fonction
BL Multiplication
B fin

; Fonction multiplication (sans MUL)
Multiplication
PUSH {R1, R2}
MOV R2, #0x00
boucle
CMP R1, #0x00
BEQ finfonction
ADD R2, R2, R0
SUB R1, R1, #0x01
B boucle

finfonction
MOV R0, R2
POP {R1, R2}
BX LR

fin
B fin


SECTION DATA
maPile ALLOC32 10;

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 LDR SP, =maPile ADD SP, SP, #40 ; Préparons deux valeurs à multiplier, par exemple 2 et 5. MOV R1, #2 MOV R0, #5 ; Appel de la fonction BL Multiplication B fin ; Fonction multiplication (sans MUL) Multiplication ; Écrivez votre code ici. N'oubliez pas de sauvegarder vos registres! BX LR fin B fin SECTION DATA maPile ALLOC32 10;

Instruction courante

Mémoire

Suivre PC
Cycle courant :