be_chti/Activite_2_2/Src/calcul_dft.s
Cavailles Kevin e0ad961c44 maj format
2020-03-30 12:18:59 +02:00

64 lines
No EOL
1.1 KiB
ArmAsm

; 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