pn_gen.asm

来自「Practical DSP Applications in Communicat」· 汇编 代码 · 共 36 行

ASM
36
字号
;
;   pn_gen.asm - PN pseudo number generator
;   generates 16-bit wordlength zero-mean random numbers
;	generator polynomial: x^-15+x^-11+x^-2+1
;
;   Prototype: int pn_gen(int *)
;	                           
;   Entry:  arg0 - AR0 pointer to the shift register
;   Return: T0 - random number

BIT15 .equ  0x8000 
BIT11 .equ  0x0800 
BIT2  .equ  0x0004 
BIT0  .equ  0x0001 

    .def  _pn_gen 
	
    .sect "rand_gen"	
_pn_gen      
    mov   *AR0,AC0             ; Get register value
    bfxtr #(BIT15|BIT2),AC0,T0 ; Get bit 15 and bit 2
    bfxtr #(BIT11|BIT0),AC0,T1 ; Get bit 12 and bit 0
	sfts  AC0,#1                
||  xor   T0,T1                ; XOR all bits
    mov   T1,T0                
    sfts  T1,#-1               
	xor   T0,T1                ; Final XOR
    and   #1,T1 
	or    T1,AC0               
	mov   AC0,*AR0             ; Update register
    sub   #0x4000,AC0,T0       ; Zero mean white noise
||  ret

    .end

⌨️ 快捷键说明

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