📄 dv336.asm
字号:
ldi 5117,rc
rptb jrule2
jrule2: ldi *ar0++,r0
|| sti r0,*ar1++
sti r0,*ar1
rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sub8: jddata
jddata: ldi 0,r0
ldi @JLJS1,ar0
ldi 45,rc
rptb jljs1c
jljs1c: sti r0,*ar0++
ldi @JDATAD,ar2
ldi ar2,ar6
addi 7078,ar6 ;7168
ldi 1,r5
ldi 2,r6
ldi 0,r1
ldi 0,ar0
jdlh00: ldi *ar2++,r0
cmpi ar6,ar2
bge jdlhz
cmpi 0,r0
ble jdlh01
cmpi 1,r6
beq jdlh00
ldi 1,r6
cmpi JMIN0,r1
bgt jdlh03
cmpi 0,ar0
ldieq 0,r1
beq jdlh00
ldi r1,rc
subi 1,rc
rptb jdlh02
jdlh02: sti r5,*ar0++
jdlh03: ldi 0,r1
ldi 0,ar0
br jdlh00
jdlh01: addi 1,r1
cmpi 0,r6
beq jdlh00
ldi 0,r6
ldi ar2,ar0
subi 1,ar0
br jdlh00
jdlhz: rets
;SUB1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;subB: jdata
jdata: ldi 0,r0
ldi @J0,ar0
sti r0,*ar0
ldi @J1,ar0
sti r0,*ar0
ldi @JDATAD,ar2
ldi ar2,ar6
addi 7078,ar6 ;7168
jdloop: ldi *ar2++,r2
cmpi ar6,ar2
bge jdend
cmpi 0,r2 ;M(x) & data comp.
ble jda2
ldi @J0,ar1
ldi *ar1,r1
cmpi 0,r1
bz jda1
ldi 0,r0
sti r0,*ar1
ldi @JLJS1,ar0
ldi *ar0++,r3
cmpi 0,r3
bne jda14
ldi *ar0,r3
addi r1,r3
sti r3,*ar0
br jda1
jda14: ldi @JLJS1,ar0
addi 47,ar0
ldi 47,rc
rptb jda15
ldi *ar0++(2),r3
jda15: sti r3,*ar0--(3)
nop *ar0++
ldi 0,r0
sti r0,*ar0++ ; save label (0=low)
sti r1,*ar0
jda1: ldi @J1,ar0
ldi *ar0,r1
addi 1,r1
sti r1,*ar0
br jdloop
jda2: ldi @J1,ar0
ldi *ar0,r1
cmpi 0,r1
bz jda21
ldi 0,r0
sti r0,*ar0
cmpi JMIN1,r1 ;now signal is "0" r1="1" number
bgt jda27
ldi @JLJS1,ar0
ldi *ar0++,r3
cmpi 0,r3
bne jda22
ldi *ar0++(2),r3
cmpi JMIN0,r3
bgt jda22
addi *ar0,r3
addi r3,r1
ldi @JLJS1,ar0
ldi 1,r3
sti r3,*ar0++
sti r1,*ar0++
ldi 48,rc
ldi ar0,ar1
addi 2,ar1
rptb jda23
ldi *ar1++,r3
jda23: sti r3,*ar0++
jda22: ldi @JLJS1,ar0
nop *ar0++
ldi *ar0,r3
addi r1,r3
sti r3,*ar0
br jda21
jda27: ldi @JLJS1,ar0
ldi *ar0++,r3
cmpi 1,r3
bne jda28
ldi *ar0,r3
addi r1,r3
sti r3,*ar0
br jda21
jda28: ldi @JLJS1,ar0
addi 47,ar0
ldi 47,rc
rptb jda29
ldi *ar0++(2),r3
jda29: sti r3,*ar0--(3)
nop *ar0++
ldi 1,r0
sti r0,*ar0++ ; save label (0=low)
sti r1,*ar0 ; save number
jda21: ldi @J0,ar0
ldi *ar0,r1
addi 1,r1
sti r1,*ar0
br jdloop
jdend: rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;subF: jamplh
jamplh:
ldf JLIMI0,r3
ldf JLIMI1,r4
ldi 0,r6
ldi @JAMPLH,ar2
ldi @JSUM,ar0
ldf *ar0,r5
cmpf r3,r5
ldige 1,r6
cmpf r4,r5
ldige 2,r6
sti r6,*ar2
rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;subC: jljsf
jljsf:
ldi @GMODE,ar1
ldi *ar1,r6
ldi @JRESULT,ar1 ;use:r0-r3,ar0,ar1 ;SMODE:25-3,50-4,75-5
ldi @JLFLAG,ar2 ;use:SMODE JLJSS JRESULT,JF0ERR
ldi 0,r3
ldi 0,r4
ldi 2,r7
jljsf0: ldi *ar1++,r0
ldi 25,r1
subi3 r1,r0,r2
absi r2
cmpi J_F0ERR0,r2
bgt jljsf1
ldi r0,r3
cmpi 3,r6
beq jljsfg
jljsf1: subi 1,r7
cmpi 0,r7
bgt jljsf0
jljsfg: ldi @JLFLAG,ar2 ;use:SMODE JLJSS JRESULT,J_F0ERR
sti r3,*ar2++
cmpi 0,r3
bne jljsg1
ldi @JDATAS0,ar1
ldi 5000,rc
rptb jljsg0
jljsg0: sti r3,*ar1++
jljsg1: rets
;SUB1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;subG: jljs
jljs: call jtest
ldi @JAMPLH,ar2
ldi *ar2,r0
cmpi 0,r0
ble jampl
ldi @PRLAMP,ar0
ldi *ar0,r1
ldi @JSORT,ar0
ldi *ar0,r2
ldi 2,r3
cmpi r1,r2
ldieq 1,r3
cmpi r3,r0
blt jampl
cmpi 55h,r7
bne jampl
ldi 0a0h,r2
ldi @RAX,ar0
sti r2,*ar0
ldi 3,r0
ldi @SMODE,ar0
sti r0,*ar0
ldi 55h,r7
br joquit
jampl: ldi 0aah,r7
joquit: rets
;SUB2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;subJ: jtest
jtest: ldi @JTERR,ar0 ;TERR CYLES
ldi 1000,r0
sti r0,*ar0 ;TERR=1000
ldi @JTERR1,ar0
ldi 1000,r0
sti r0,*ar0 ;TERR1 SINGLE
ldi 0,r0
ldi @JCYSUM,ar0
sti r0,*ar0
ldi @JCYSUMZ,ar0
sti r0,*ar0
ldi @JSORT,ar0
sti r0,*ar0 ;JSORT=0
ldi @JLJS1,r0
ldi @JLJS1S,ar0
sti r0,*ar0
ldi @DCOD3,ar1
;--------------------------------------------------------------------
ldi 0,ir0
jt1: addi 1,ir0
ldi 12,r6 ;r6=12
ldi @SAVE_AR1,ar2 ;;;;;save ar1
sti ar1,*ar2
ldi ar1,ar2 ;ar2=ar1
ldi 2,ar6
call jcode ;may use:r0-r5,r7,ar0-1,ar3-7
cmpi J_ERR,r7 ;r7 is circle err
bgt jt10
ldi @JTERR1,ar0
ldi *ar0,r0
cmpi r0,r5 ;r5 is single code err
bgt jt10 ;if r5>JTERR1 then goto jt10
sti r5,*ar0 ;else JTERR=r7 JTERR1=r5
ldi @JTERR,ar0
sti r7,*ar0
ldi @JSORT,ar0
sti ir0,*ar0 ;JSORT=ir0
;----------------------------position
ldi @SAVE_AR5,ar0
ldi *ar0,r0
subi 3,r0 ;ar6=2--1 if r0=1 then move 1
absi r0 ; if r0=0 then move 0
ldi @JLOC5,ar0
sti r0,*ar0
ldi @SAVE_AR6,ar0
ldi *ar0,r0
subi 2,r0 ;ar6=2--1 if r0=1 then move 1
absi r0 ; if r0=0 then move 0
ldi @JLOC6,ar0
sti r0,*ar0
ldi @JCYSUM,ar0
ldi *ar0,r0
ldi @JCYSUMZ,ar0
sti r0,*ar0
ldi @JLJS1S,ar0
ldi *ar0,r0
ldi @JLJS1SZ,ar0
sti r0,*ar0
jt10: ldi @SAVE_AR1,ar2 ;;;;;load ar1
ldi *ar2,ar1
addi J_3CODE,ar1
tj11: cmpi J_L,ir0 ;10 groups 3 words signal
bge jt2 ;jtout
br jt1
jt2: ldi @DCOD2,ar1
jt20: addi 1,ir0
ldi 8,r6
ldi @SAVE_AR1,ar2 ;;;;;save ar1
sti ar1,*ar2
ldi ar1,ar2 ;ar2=ar1
ldi 1,ar6
call jcode
cmpi J_ERR,r7
bgt jt21 ;
ldi @JTERR1,ar0
ldi *ar0,r0
cmpi r0,r5
bgt jt21 ;if r7>JTERR then goto sjt10
sti r5,*ar0 ;else JTERR=r7
ldi @JTERR,ar0
sti r7,*ar0
ldi @JSORT,ar0
sti ir0,*ar0 ;JSORT=ir0
;----------------------------locate
ldi @SAVE_AR5,ar0
ldi *ar0,r0
subi 2,r0 ;ar6=2--1 if r0=1 then move 1
absi r0 ; if r0=0 then move 0
ldi @JLOC5,ar0
sti r0,*ar0
ldi 0,r0
ldi @JLOC6,ar0
sti r0,*ar0
ldi @JCYSUM,ar0
ldi *ar0,r0
ldi @JCYSUMZ,ar0
sti r0,*ar0
ldi @JLJS1S,ar0
ldi *ar0,r0
ldi @JLJS1SZ,ar0
sti r0,*ar0
;----------------------------------
jt21:
ldi @SAVE_AR1,ar2 ;;;;;load ar1
ldi *ar2,ar1
addi J_2CODE,ar1
jt22: cmpi J_LUHU,ir0
blt jt20
;------------------------------------------------
ldi 0aah,r7
ldi @JTERR1,ar0
ldi *ar0,r0 ;single code error
ldi @JTERR,ar0
ldi *ar0,r1 ;cycle error
cmpi J_ERR,r1
bgt jquits
ldi 55H,r7
br jquits
ldi 55h,r7
jquits: rets
;SUB3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;subK: jcode
jcode: ;may use:r0-r5,r7,ar0-1,ar3-7
ldi @SAVE_AR5,ar3 ;ar2 is DCODE addr
ldi 2,r0
sti r0,*ar3 ;r2=single number
ldi @SAVE_AR6,ar3 ;ar2 is DCODE addr
sti ar6,*ar3 ;r2=single number
ldi 500,r7
ldi 500,r5
ldi @SAVE_R5,ar3 ;r6=dbale number
sti r5,*ar3
ldi @SAVE_R6,ar3 ;r6=dbale number
sti r6,*ar3
ldi @SAVE_AR2,ar3 ;ar2 is DCODE addr
subi 1,ar2
sti ar2,*ar3 ;r2=single number
ldi 0,ar2
ldi @JLJS1,ar0
ldi *ar0,r0
cmpi 1,r0
ldieq 2,ar2
addi ar2,ar0
subi 2,ar0
ldi @SAVE_AR0,ar3
sti ar0,*ar3
jcode0:
ldi @SAVE_AR0,ar3
ldi *ar3,ar0
addi 2,ar0
sti ar0,*ar3
subi 4,ar0
ldi @SAVE_AR2,ar3
ldi *ar3,ar2
addi 1,ar2
sti ar2,*ar3
ldi @SAVE_R6,ar3
ldi *ar3,ar7
ldi 3,ar5 ;chang the data,must chang SAVE_AR5!!!
cmpi 11,ar7
ldilt 2,ar5
jcode1: addi 4,ar0
ldi @SAVE_R6,ar3
ldi *ar3,ar7
ldi ar2,ar4
ldi ar0,ar3
ldi 0,r4
ldi 0,r2
ldi 0,ir1
;--------------------------------------------
jcode2: ldi *ar3++,r3 ;input:ar0 is jcode first addr.
ldi *ar3++,r5
ldi *ar4++,r0 ;ar2 is standrd code addr.
addi r5,ir1
subi r0,r5
addi r5,r4 ;sum up wu_cha
absi r5
cmpi r2,r5 ;smallest wu_cha
ldigt r5,r2 ;if r7>r4 then r7=r4
subi 1,ar7 ; r2 is 1 cyle length
cmpi 0,ar7 ; r6 is 2 cyle length
bgt jcode2 ;loop
;----------------------------------
absi r4
ldi @SAVE_R5,ar7
ldi *ar7,r5
cmpi r2,r5 ;smallest wu_cha
ble jcode3
ldi r2,r5 ;if r7>r4 then r7=r4
ldi r4,r7
ldi @JCYSUM,ar7
sti ir1,*ar7
ldi @JLJS1S,ar7
sti ar0,*ar7
jcode3: ldi @SAVE_R5,ar7
sti r5,*ar7
cmpi r2,r5 ;locate jljs1 position
bne jcodet
ldi @SAVE_AR5,ar7
sti ar5,*ar7
ldi @SAVE_AR6,ar7
sti ar6,*ar7
jcodet:
subi 1,ar5
cmpi 0,ar5
bgt jcode1 ;loop
subi 1,ar6
cmpi 0,ar6
bgt jcode0 ;loop
ldi @SAVE_R5,ar6
ldi *ar6,r5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -