⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dv336.asm

📁 基于VC33的关于铁路信号发送和处理的程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;subN: jinit
jinit:  ldi     @FIRH46,ar0              ;H(I) addreer   INIT FIR40 FILTER
        ldi     @H46,ar1
	ldf     *ar0++,r0
        ldi     N46,r1
	subi    2,r1
	rpts    r1
	ldf     *ar0++,r0
||      stf     r0,*ar1++
	stf     r0,*ar1               
	
        ldi     @X46,ar0             ;X(I) BUFFER init
	ldf     0,r0
	rpts    07fh
	stf     r0,*ar0++             
	
        ldi     @X46,ar0
        ldi     @SAR46,ar1
	sti     ar0,*ar1               ;FIR40  FILTER INIT END
	rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;subO: jljsdc
jljsdc:
        ldf     0,r6
        ldi     @JINADDR,ar1
        ldi     JDLENTH,rc
	subi    1,rc
        rptb    jljsdc0
jljsdc0:addf    *ar1++,r6
        mpyf    @XNUM,r6

        ldi     @JINADDR,ar1
        ldi     JDLENTH,rc
	subi    1,rc
        ldf     0,r1
        subf3   r6,r1,r4        ;r4=-m(i)
        rptb    jljsdc3
	ldf     *ar1,r2
        addf    r4,r2           ;r2=r2+m(i)
jljsdc3:stf     r2,*ar1++

	ldf     0,r5
        ldf     0,r0
        ldi     @JINADDR,ar1
	ldf     *ar1++,r2
        ldi     JDLENTH,rc
	subi    1,rc
        rptb    jljsdc1
        cmpf    0,r2
        ble     jljsdc1
	addf    r2,r5
        addf    1,r0
jljsdc1:ldf     *ar1++,r2
	call    invf
	mpyf    r0,r5

	ldf     r5,r3
	ldf     0,r5
        ldf     0,r0
        ldi     @JINADDR,ar1
	ldf     *ar1++,r2
        ldi     JDLENTH,rc
	subi    1,rc
        rptb    jljsdc2
	cmpf    r3,r2
        blt     jljsdc2
	addf    r2,r5
        addf    1,r0
jljsdc2:ldf     *ar1++,r2
	call    invf
	mpyf    r0,r5
        ldi     @JSUM,ar1
        mpyf    @STXS,r5
        stf     r5,*ar1
	rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;subP: mlampj
mlampj: ldi     @RAX,ar0
        ldi     *ar0,r0            
	cmpi    0a0h,r0                          
	beq     jhcode
 
        ldi     @JNWAIT,ar0            ;no signal: 0A3h NWAIT=(0,1)
        ldi     *ar0,r0                ;check wait states
	cmpi    1,r0                   ;if NWAIT=1 then goto state1
	beq     jnsta0                 ;if NWAIT=0 the next
	
        ldi     0,r0
        ldi     @JNUM,ar2
	sti     r0,*ar2
        ldi     @JNWAIT,ar0
        ldi     1,r0
	sti     r0,*ar0                ;write wait flag
        br      lamp4j 

jnsta0:
        ldi     @JNUM,ar2
        ldi     *ar2,r0
        cmpi    @JLJSB1,r0
        blt     lamp4j

        ldi     0h,r2
        br      tlampj

jhcode:
        ldi     0,r0
        ldi     @JNUM,ar0
        sti     r0,*ar0
        ldi     @JNWAIT,ar0
        sti     r0,*ar0

        ldi     @JSORT,ar2
        ldi     *ar2,r2
        ldi     @PRLAMP,ar2
        ldi     *ar2,r5                ;get above lamp code
	cmpi    r2,r5                  ;if old lamp=new lamp
        bne     jhcode0
        br      lamp4j                 ;now is OK,now is 0a0h

jhcode0:
        ldi     @JSORT,ar2
        ldi     *ar2,r2

        ldi     @SMODE,ar0
        ldi     *ar0,r1
        ldi     @GMODE,ar0
	sti     r1,*ar0

tlampj: ldi     @PRLAMP,ar2
        sti     r2,*ar2

        ldi     0,r0
        ldi     @ZNUM,ar2              ;clear
	sti     r0,*ar2
        ldi     @HNUM,ar2
	sti     r0,*ar2
        ldi     @JNWAIT,ar2
	sti     r0,*ar2

lamp4j: rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;comm subK: fft
fft:    ldi     @LOGFFT,ar0           ;ar0 save 09--512,0b--2048
        ldi     1,ar1
        lsh3    *ar0,ar1,r7
        ldi     r7,ir0
        ldi     r7,ar7
    	lsh     -1,ar7
        ldi     2048,ir1
        ldi     13,ar4
    	subi    *ar0,ar4
    	lsh3    ar4,ar1,ar5
        ldi     1,ar6
fft1:   ldi     @INADDRD,ar0
        ldi     *ar0,ar0
        addi3   ar7,ar0,ar1
        addi3   r7,ar0,ar2
    	addi3   ar7,ar2,ar3
        ldi     ar6,rc
    	subi    1,rc
    	rptb    fft2
    	addf3   *ar1,*ar0,r0
    	subf3   *ar1,*ar0,r1
    	addf3   *ar3,*ar2,r2
    	subf3   *ar3,*ar2,r3
    	stf     r1,*ar1++(ir0)
||      stf     r0,*ar0++(ir0)
fft2:   stf     r3,*ar3++(ir0)
||      stf     r2,*ar2++(ir0)
    	cmpi    1,ar7
    	bzd     fft5
        ldi     1,r6
        ldi     @SINTAB,ar4
fft3:   addi    ar5,ar4
        ldf     *ar4,r5
        ldi     r6,ar0
        ldi     @INADDRD,ar1
        ldi     *ar1,ar1
        addi    ar1,ar0
        addi3   ar7,ar0,ar1
        addi3   r7,ar0,ar2
    	addi3   ar7,ar2,ar3
        addi    1,r6
        ldi     ar6,rc
    	subi    1,rc
    	rptb    fft4
        subf3   *ar1,*ar0,r2
    	subf3   *ar3,*ar2,r1
        mpyf3   r2,r5,r0
||      addf3   *ar3,*ar2,r3
    	mpyf3   *+ar4(ir1),r1,r3
||      stf     r3,*ar2++(ir0)
    	subf3   r0,r3,r4
    	mpyf3   r1,r5,r0
||      addf3   *ar1,*ar0,r3
        mpyf3   *+ar4(ir1),r2,r3
||      stf     r3,*ar0++(ir0)
        addf    r0,r3
fft4:   stf     r4,*ar3++(ir0)
||      stf     r3,*ar1++(ir0)
    	cmpi    ar7,r6
    	bnz     fft3
        lsh     1,ar5
    	brd     fft1
    	lsh     1,ar6
        ldi     ar7,ir0
    	lsh     -1,ar7
fft5:   ldi     r7,rc
        subi    3,rc
        ldi     r7,ir0
        lsh     -1,ir0
        ldi     @INADDRD,ar0
        ldi     *ar0,ar0
    	addi3   r7,ar0,ar1
        ldi     ar0,ar2
    	nop     *ar0++(1)
    	nop     *ar2++(ir0)B
        ldi     ar1,ar3
    	rptb    fft6
    	cmpi    ar2,ar0
    	bged    fft6
    	nop     *ar1++(1)
    	nop     *ar3++(ir0)B
    	ldf     *ar2,r2
||      ldf     *ar0++(1),r0
        ldf     *ar3,r3
||      ldf     *ar1,r1
        stf     r2,*-ar0(1)
||      stf     r0,*ar2
        stf     r3,*ar1
||      stf     r1,*ar3
fft6:   nop     *ar2++(ir0)B
        rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;comm subL: ifft        
ifft:   ldi     @LOGFFT,ar0           ;ar0 save 09--512,0b--2048
        ldi     1,ar1
    	lsh3    *ar0,ar1,r7
        ldi     r7,ir0
        ldi     r7,ar7
    	lsh     -1,ar7
        ldi     2048,ir1
        ldi     13,ar4
    	subi    *ar0,ar4
    	lsh3    ar4,ar1,ar5
        ldi     1,ar6
        ldi     @INADDRD,ar0
        ldi     *ar0,ar0
        ldi     r7,r0
        addi3   r0,ar0,ar0
        ldi     r0,rc
    	subi    1,rc
    	rptb    ifft1
    	ldf     *ar0,r0
    	negf    r0,r0
ifft1:  stf     r0,*ar0++(1)
ifft2:  ldi     @INADDRD,ar1        
        ldi     *ar1,ar0
    	addi3   ar7,ar0,ar1        
        addi3   r7,ar0,ar2       
        addi3   ar7,ar2,ar3
        ldi     ar6,rc
        subi    1,rc
        rptb    ifft3
    	addf3   *ar1,*ar0,r0
    	subf3   *ar1,*ar0,r1
        addf3   *ar3,*ar2,r2
    	subf3   *ar3,*ar2,r3
        stf     r1,*ar1++(ir0)
||      stf     r0,*ar0++(ir0)
ifft3:  stf     r3,*ar3++(ir0)
||      stf     r2,*ar2++(ir0)
        cmpi    1,ar7
        bzd     ifft6
        ldi     1,r6
        ldi     @SINTAB,ar4
ifft4:  addi    ar5,ar4
        ldf     *ar4,r5
        ldi     r6,ar0
        ldi     @INADDRD,ar1
        ldi     *ar1,ar1
        addi    ar1,ar0
        addi3   ar7,ar0,ar1
        addi3   r7,ar0,ar2
     	addi3   ar7,ar2,ar3
        addi    1,r6
        ldi     ar6,rc
        subi    1,rc
        rptb    ifft5
        subf3   *ar1,*ar0,r2
        subf3   *ar3,*ar2,r1
        mpyf3   r2,r5,r0
||      addf3   *ar3,*ar2,r3
        mpyf3   *+ar4(ir1),r1,r3
||      stf     r3,*ar2++(ir0)
        subf3   r0,r3,r4
        mpyf3   r1,r5,r0
||      addf3   *ar1,*ar0,r3
    	mpyf3   *+ar4(ir1),r2,r3
||      stf     r3,*ar0++(ir0)
        addf    r0,r3
ifft5:  stf     r4,*ar3++(ir0)
||      stf     r3,*ar1++(ir0)
        cmpi    ar7,r6
        bnz     ifft4
        lsh     1,ar5
     	brd     ifft2
    	lsh     1,ar6
        ldi     ar7,ir0
        lsh     -1,ar7
ifft6:  ldi     r7,rc
        subi    3,rc
        ldi     r7,ir0
        lsh     -1,ir0
        ldi     @INADDRD,ar1
        ldi     *ar1,ar0
        addi3   r7,ar0,ar1
        ldi     ar0,ar2
        nop     *ar0++(1)
        nop     *ar2++(ir0)B
        ldi     ar1,ar3
        rptb    ifft7
        cmpi    ar2,ar0
        bged    ifft7
        nop     *ar1++(1)
        nop     *ar3++(ir0)B
        ldf     *ar2,r2
||      ldf     *ar0++(1),r0
        ldf     *ar3,r3
||      ldf     *ar1,r1
        stf     r2,*-ar0(1)
||      stf     r0,*ar2
        stf     r3,*ar1
||      stf     r1,*ar3
ifft7:  nop     *ar2++(ir0)B
        ldi     @INADDRD,ar0
        ldi     *ar0,ar0
        ldi     r7,r0
    	addi3   r0,ar0,ar0
        ldi     r0,rc
    	subi    1,rc
    	rptb    ifft8
    	ldf     *ar0,r0
    	negf    r0,r0
ifft8:  stf     r0,*ar0++(1)
    	rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;comm_sub end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sfs_sub start!
;------------------------------------------------------------sfs_sub list!
; 1: sfs1     2: snbs      3: snbu     4: sfsf       5: sfs2
; 6: sf1code  7: sifft0    8: snf1     A: verall
; B: sfsout   C: srcout
;------------------------------------------------------------sfs_sub list!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sfs sub1: sfs1
sfs1:   ldf     0,r1
        ldi     @RF0,ar0
        stf     r1,*ar0
        ldi     @RF1,ar0
        stf     r1,*ar0
        ldi     @S_AMP,ar0
        stf     r1,*ar0
        ldi     0,r1
        ldi     @RF0C,ar0
        sti     r1,*ar0
        ldi     @RF1CO,ar0
        sti     r1,*ar0

        ldi     0,r6
        ldi     @SRESUL,ar0
        ldi     ar0,ar6
        addi    14,ar6
        addi    1,ar0
        ldf     *ar0++(2),r0
sfs10:  ldf     *ar0++(2),r1
        cmpi    ar6,ar0
        bge     sf0a3
        ldi     ar0,ar1
        subi    5,ar1                  ;7 2000.5.29
        subf3   r0,r1,r4
        cmpf    40,r4
        blt     sfs12
        ldf     0,r4
        stf     r4,*ar1++
        stf     r4,*ar1
        ldf     r1,r0
        addi    1,r6
        br      sfs10

sfs12:  ldi     @SRESUL,ar0
        ldi     ar0,ar6
        addi    13,ar0
        ldf     *ar0--(2),r0
sfs14:  ldf     *ar0--(2),r1
        cmpi    ar6,ar0
        ble     sf0a3
        ldi     ar0,ar1
        addi    4,ar1                  ;7 2000.5.29
        subf3   r1,r0,r4
        cmpf    40,r4
        blt     sfs16
        ldf     0,r4
        stf     r4,*ar1--
        stf     r4,*ar1
        ldf     r1,r0
        addi    1,r6
        br      sfs14

sfs16:  ldi     @SRESUL,ar0
        ldi     @SRESUL0,ar6
        ldi     7,r7
        call    rsort

        subi    7,r6
        absi    r6
        cmpi    4,r6
        blt     sf0a3

        ldi     0,ar5
        ldf     88,r2

        ldi     @SRESUL0,ar0
        addi    1,ar0
        ldi     2,r7             ;3
sfs18:  ldf     *ar0++(2),r1           ;r1 is f
        ldi     4,r5             ;5
        ldi     ar0,ar2                ;save ar0 ***
sfs19:  ldf     *ar0++(2),r3           ;r3 is second f
        subf3   r3,r1,r4
        absf    r4,r4
        cmpf    SFSBLIMT,r4            ;biao 2       80
        ble     sfs21
        call    sfsf
sfs21:  subi    1,r5
        cmpi    0,r5
        bz      sfs20                  
        br      sfs19
sfs20:  subi    1,r7
        cmpi    0,r7
        ble     sfs1g
        ldi     ar2,ar0
        br      sfs18

sfs1g:  cmpf    SF0ERR0,r2
        bgt     sf0a3

        ldf     0,r6
        float   550,r1
        float   650,r2
        float   750,r3
        float   850,r4
        cmpi    1,ar5
        ldfeq   r1,r6
        cmpi    2,ar5
        ldfeq   r2,r6
        cmpi    3,ar5
        ldfeq   r3,r6
        cmpi    4,ar5
        ldfeq   r4,r6

        ldi     @RF0,ar0
        stf     r6,*ar0
        ldi     @ZF0,ar0               ;find f0
        stf     r6,*ar0
        ldi     @RF0C,ar0
        sti     ar5,*ar0
        call    snbs
        ldi     1,r6
        call    suamp
        cmpi    55h,r7
        bne     sf0a3

        call    sifft0
        call    sfs2
        br      squit

sf0a3:  ldi     0aah,r7
squit:  rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sub2: suamp
suamp:  ldi     @SLIMITD,ar1
        cmpi    2,r6
        ldieq   @ULIMITD,ar1
        ldf     *ar1,r5

        cmpi    2,r6
        beq     juampcom

        ldi     0,r7
        cmpf    SLIMI0,r5
      

⌨️ 快捷键说明

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