bitreverse test.asm

来自「针对SHARC系列DSP的卷积、自相关函数、FFT、FIR源代码」· 汇编 代码 · 共 66 行

ASM
66
字号
/*--------------------------------------------------------------------------
    INCLUDES
--------------------------------------------------------------------------*/
#include <def21065l.h>

/*--------------------------------------------------------------------------
   CONSTANT & MACRO DEFINITIONS
--------------------------------------------------------------------------*/
#define TRANSBYTENUM   8
#define REVERSESTEP    0x20000000   //通过公式2^(32-TRANSBYTENUM)自己或用程序计算
/*--------------------------------------------------------------------------
   GLOBAL DECLARATIONS
--------------------------------------------------------------------------*/


/*---------------------------------------------------------------------------*/
.SEGMENT/DM     seg_dmda;

.VAR   DataSource[TRANSBYTENUM]={0,1,2,3,4,5,6,7};
.VAR   DataDestination[TRANSBYTENUM];

.ENDSEG;

/*---------------------------------------------------------------------------*/

.SEGMENT/PM seg_int_rst;
			NOP; JUMP _main; RTI; RTI;
.ENDSEG;

.SEGMENT /PM seg_pmco;

/* ---------------------------------------------------------------------------
;
;	main:        Notes demo main function.
;               
----------------------------------------------------------------------------*/
_main:
    
   BIT SET MODE1 BR0;      //设置位反转模式

   B0=DataSource;           
   I0=DataSource;          //将数据源基址赋给有位反序能力的I0寄存器
   M0=REVERSESTEP;            //设置数据源地址修正的位反序步长
   L0=0;                   //禁止位循环缓冲功能
   BITREV(I0,0);           //将基址进行位反序
   
   B1=DataDestination;     //将数据目的基址赋给有位反序能力的I0寄存器
   I1=DataDestination;     //将数据目的基址赋给有位反序能力的I0寄存器
   M1=1;                   //I1是没有位反序能力的DAG
   L1=0;
   
   LCNTR=TRANSBYTENUM, DO TransByte UNTIL LCE;
   			R0=DM(I0,M0);
TransByte:  DM(I1,M1)=R0;

wait:			        	/* 循环等待*/

   IDLE;
   JUMP wait;

_main.end:
.ENDSEG;



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?