; AFONSO Perrine LARTIGUE Auriane thumb area moncode, code, readwrite import TabSin import TabCos export CalculM calculReouIm proc ; procedure permettant de calculer imaginaire ou reel ; ro contient la valeur de k ; r1 contient adresse de TabSig ; r2 contient adresse de TabCos ou Tabsin mov r3 , #0x00 ; r3 va nous servir de compteur i mov r12, #0x00 ; va contenir le resultat temporairement comparaison cmp r3, #64 ; on compare i a 64 bne loop b fin loop push {r0} push{r12}; on garde l'ancienne contenu dans r12 mul r0, r0 , r3 ; i*k and r0, #0x3F ; contient i*k modulo 64 ldrsh r12 , [r2, r0 , LSL #0x01] ; cos(i*k*2 pi / N) mov r0 , r12 ldrsh r12 , [r1, r3 , LSL #0x01] ; x(i) mul r12 , r12 , r0 ; x(i)* cos(i*k*2 pi / N) add r3 , #0x01 ; on incremente le compteur i mov r0, r12 pop{r12} add r12, r0 pop {r0} b comparaison ; on reboucle fin mov r0 , r12 ; on stocke le resultat final dans r0 bx lr endp CalculM proc ; k dans r0 ;adresse de TabSig dans le registre r1 ldr r2, =TabCos ; adresse de TabCos dans le registre r2 push{LR,r0} bl calculReouIm mov r3, r0; Re dan r3 pop{r0} push {r3} ldr r2, =TabSin ; adresse de TabSin dans le registre r2 bl calculReouIm mov r12 , r0 ; Im dans r12 pop{r3} smull r1, r2, r3 , r3 ; Re^2 smlal r1, r2, r12 , r12; Re^2 +Im^2 mov r0, r2 ; on stocke le resultat dans r2 pop{PC} bx lr endp end