📄 scramble.asm
字号:
/******************************************************************************
{ 码位倒置子程序
Calling Parameters
Sequentially ordered input data in inputreal
Return Values
Scrambled input data in inplacereal
Altered Registers
I0,I4,M0,M4,AY1
Altered Memory
inplacereal
}
****************************************************************************/
#define M 128
#define N 8
#define L 16
#define mod_value 0x0200 /*{Initialize constants}{to calculate correct mod_value, divide 2^16 by n}{n:the nubmer of the address to be reversed,n=log2N}*/
.EXTERN inputreal;
.EXTERN inputimag;
.EXTERN inplacereal;
.EXTERN inplaceimag;
.GLOBAL scramble;
/* Program Code */
.section/pm program;
scramble: I4=inputreal; /*{I4-->sequentially ordered data from inputreal}*/
I0=0; /*{I0-->scrambled data for inplacereal}*/
M4=1;
M0=mod_value; /*{M0=modifier for reversing n bits}*/
L4=0;
L0=0;
CNTR = N;
ENA BIT_REV; /*{Enable bit-reversed outputs on DAG1}*/
DO bit_rev_real UNTIL CE;
AY1=DM(I4,M4); /*{Read sequentially ordered data}*/
bit_rev_real: DM(I0,M0)=AY1; /*{Write data in bit-reversed location}*/
DIS BIT_REV;
I1=0;
I2=inplacereal;
M1=L;
M2=L;
CNTR = N;
DO exchang1 UNTIL CE; /*write bit-reversed data to inplacereal */
AY1=DM(I1,M1);
exchang1: DM(I2,M2)=AY1;
I4=inputimag; /*{I4-->sequentially ordered data from inputimag}*/
I0=0; /*{I0-->bit-reversed data for inplaceimag}*/
CNTR = N;
ENA BIT_REV;
DO bit_rev_imag UNTIL CE;
AY1=DM(I4,M4); /*{Read sequentially ordered data}*/
bit_rev_imag: DM(I0,M0)=AY1; /*{Write data in bit-reversed location}*/
DIS BIT_REV; /*{Disable bit-reverse}*/
I1=0;
I2=inplaceimag;
M1=L;
M2=L;
CNTR = N;
DO exchang2 UNTIL CE; /*write bit-reversed data to inplaceimag */
AY1=DM(I1,M1);
exchang2: DM(I2,M2)=AY1;
RTS; /*{Return to calling program}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -