; ce programme est pour l'assembleur RealView (Keil) thumb area moncode, code, readonly export calcul_dft_moitie export calcul_dft import TabCos import TabSin ; calcul_dft proc push {lr} ;push {r1} ldr r2, =TabCos bl calcul_dft_moitie ;recuperation Re(k) dans r0 ;pop {r1} ;push {r0} ;mise de Re(k) dans la pile ;ldr r2, =TabSin ;bl calcul_dft_moitie ;mise de -Im(k) dans r0 ;mul r0, r0, r0 ;(-Im(k))² ;pop {r1} ;mise de Re(k) dans r1 ;mul r1, r1, r1 ;Re(k)² ;add r0, r0, r1 ;addition de Re(k)² + Im(k)² pop {lr} bx lr endp calcul_dft_moitie proc push {lr,r4-r6} mov r4, r0 mov r5, r2 mov r6, r1 mov r3, #0 ;i=0 dans r3 mov r0, #0 ;resultat de la somme dans r0 boucle ldrh r2, [r4, r3, LSL #1] ;chargement de x(i) mul r1, r3, r6 ;multiplication ik dans r1 and r1, r1, #63 ;modulo de ik par 64 ldrh r1, [r5, r1, LSL #1] ;chargement de cos(ik..) mul r12, r1, r2 ;multiplication x(i)cos(ik..) add r0, r0, r12 ;ajout dans la somme add r3, #1 ;incrementation de i cmp r3, #64 ;test de i bne boucle beq sortie sortie pop {lr,r4-r6} bx lr endp end