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 + -
显示快捷键?