;************************************************************** ; bit_rev.asm ; Test de l'adressage en bits inversés : ; copie d'une zone de mémoire dans une autre ; en utilisant l'adressage binaire inversé ; ; Benoît Decoux, cours-TP DSP 2002-2003, EFREI ;************************************************************** ;*******genetab************************************************ ; Macro de remplissage d'un tableau de 'points' valeurs ; -valeurs : de 0 à points genetab macro points org x:data1 count set 0 dup points ; répéter 'points' fois les lignes suivantes jusqu'à 'endm' dc count ; copier 'count' en mémoire (avec post-incrémentation de l'adresse) count set count+1 ; count=count+1 endm ; fin du org endm ; fin macro points equ 8 ; nombre de points data1 equ $10 ; adresse de la mémoire source data2 equ $30 ; adresse de la mémoire destination org x:data1 ; réservation de l'espace mémoire de départ ds points org x:data2 ; réservation de la mémoire d'arrivée : ds points ; le tableau précédent en binaire inversé genetab points ; appel de la macro de génération du tableau de points org p:$400 ; programme principal jsr copie ; appel du sous-programme de copie jmp * ; tourne en rond et ne fait rien ;**********************copie******************************************************************* ; Routine pour décrypter (=remettre dans l'ordre naturel) les points résultant de la FFT ; -points de départ dans mémoire coef ; -points décryptés dans mémoire coef2 copie move #data1,r2 ; r2 pointe sur la zone 'data1' move #data2,r3 ; r3 pointe sur la zone 'data2' move #-1,m2 ; programmation de l'adressage linéaire pour m2 move #0,m3 ; programmation de l'adressage 'bit reverse' pour m3 move #points/2,n3 ; nombre d'adresses qu'il faut inverser -> n3 ; (= la moitié du tableau seulement) do #points,fin_cop ; boucle de copie sur 'points' itérations move x:(r2)+,x0 ; lecture de la valeur dans la mémoire source move x0,x:(r3)+n3 ; écriture de la valeur dans la mémoire destination ; (avec adressage en 'bit reverse') fin_cop rts ;***********************fin de copie*********************************************************** end ; fin programme