Pour faire une multiplication de nombres de 8 bits nous n'avons aucune instruction avec notre msp430G2555
Mais nous allons lui apprendre :
une multiplication rappel :
R=N1 x N2
R : résultat de la multiplication de N1 par N2
N1 : le multiplicande
N2: le multiplieur
cette facon de faire est intuitive mais pas forcément la meilleur.
on va additionner N2 fois N1 et nous aurons le résultat. (on va lui faire compter sur ses doigts (registres))
Ecrire in code assembleur qui va réaliser cette opération :
pour que tout le monde est une solution proche on va imposer:
R4 :multiplicande
R5: multiplieur
R6: Résultat
R7: ...compteurs etc..
inconvénient , le temps de calcul n'est pas le même en fonction du calcul ! et il peut être très long
Nous allons appliquer ce que nous avons appris depuis notre enfance a notre msp430.
additions et rotations ...
Ecrire un code pour ce faire :
.org 0xC000
;10 x 20
mov.b #10,R4 ; multiplicande
mov.b #20,R5 ; multiplicateur
mov.b #00,R6 ; résultat R4xR5 dans R6
mov.b #8,R7 ; 8 operations pour la multiplication
suivant:
clrc ; on part avec une CARRY=0
; on va parcourir le multiplicateur
rrc.w R5 ; passe le bit de poids faible dans C
jc addition
jmp rotation
addition:
add.w R4,R6
rotation:
rla.w R4 ; rotation a gauche
dec R7
jnz suivant
fin: br fin
.end