📄 t25.asm
字号:
LD ADTIMES,#CYPOINT ;SAMPLE 8000 POINT
ADD ADTIMES,#CYPOINT
LD AX,#BUFFADD ;AX IS YLB ADDR
LD CX,AX
ADD CX,#CYPOINT ;CX IS QMX ADDR
LDB ADCH,#YLACH
ZSXADC: LDB AD_COM,ADCH ;4
LDB ADREAD,#0BH ;4
ZSXBUSY:DJNZ ADREAD,ZSXBUSY ;(15-1)*8+5=117
LDB ADREAD,AD_RESHI ;4
CMPB ADCH,#YLACH
JE YLOFFSET
STB ADREAD,[CX]+ ;4
LDB ADCH,#YLACH
SJMP QMOFFSET ;8
YLOFFSET:STB ADREAD,[AX]+ ;8
LDB ADCH,#QMACH
NOP ;4
QMOFFSET:PUSH DELAYCYCLE ;8
ZSXDELAY:DJNZ DELAYCYCLE,ZSXDELAY ;(DELAYCYCLE-1)*8+5
POP DELAYCYCLE ;12
DEC ADTIMES ;4
JNE ZSXADC ;8
LDB ADCH,#QMACH
RET
;***********FIND MAX********************
;ENTER: AX= BUFF ADD BX= CONUT MAXPA=0
;RETURN: MAXPA=? , WIDESTA= MAX ADD
FINDMAX:LDB CL,[AX]+ ;AX:ADD BX:COUNT CX:DATA
CMPB CL,MAXPA
JH HMAX
JE HMAX
NEXTMAX:DEC BX
CMP BX,#0000H
JE MAXOK
SJMP FINDMAX
HMAX: LDB MAXPA,CL
DEC AX
ST AX,WIDESTA ;MAXPA ADD
INC AX
SJMP NEXTMAX
MAXOK: RET
;***********CALC ZHSHX OFFSET***
;ENTER: WIDESTA=QMX MAX ADDRESS
;RETURN:WIDESTA=YLB MAX ADDRESS
ZSXSET: LDB CL,#GANGHAOL
LDB CH,#00H
LDB BL,[CX]+
LDB DL,#0AH
MULUB BL,DL
LDB DL,[CX]
ADDB BL,DL
DECB BL ;GANGHAOL
SHLB BL,#01H
LDB DL,#20H
LDB CL,ZSXXH
DECB CL
MULUB CL,DL
ADDB CL,BL
LD DPSTRING,#ZSXTAB
ADD DPSTRING,CX
PUSH ZHS
PUSH WIDESTA
LD BX,#CYPOINT ;PROCESS 4000
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
LDB MAXPA,#TLHI1
SCALL FINDPOINT
CMP ZHS,#0000H
JE ZSX720
LD WIDEH,ZHS
LD BX,#CYPOINT ;PROCESS 4000
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
LDB MAXPA,#TLHI2
SCALL FINDPOINT
ADD WIDEH,ZHS
LD BX,#CYPOINT ;PROCESS 4000
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
LDB MAXPA,#TLHI3
SCALL FINDPOINT
ADD WIDEH,ZHS
LD BX,#CYPOINT ;PROCESS 4000
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
LDB MAXPA,#TLHI4
SCALL FINDPOINT
ADD WIDEH,ZHS
LD CX,WIDEH
SHR CX,#02H
CMP CX,#LPOINT
JNH ZSX720
CMP CX,#HPOINT
JH ZSX720
SJMP ZSXJS
ZSX720: LD CX,#FPOINT
ZSXJS: LD ZHS,CX
LD AX,[DPSTRING] ;AX IS ZSX OFFSET
MULU CX,AX
LD BX,#FPOINT
DIVU CX,BX
LD WIDEH,CX
LD CX,ZHS
ADD AX,#0168H ;360
MULU CX,AX
DIVU CX,BX
LD WIDEL,CX
POP WIDESTA
POP ZHS
SUB WIDESTA,#CYPOINT ;NOW YLB ADD
ADD WIDEH,WIDESTA
ADD WIDEL,WIDESTA
LDB DL,[WIDEH] ;WIDESTA AX
LDB DH,[WIDEL]
CMPB DL,DH
JH ZSXIS1
LD WIDESTA,WIDEL
RET
ZSXIS1: LD WIDESTA,WIDEH
RET
;***********SAMPLE FIND MAX AND WIDE****
;ENTER:DELAYCYCLE=SAMPLE DELAY TIME
;RETURN:MAXPA,WIDE,WIDENUM
; WIDESTA=GEGIN ADDRESS
SAMMW: CMPB YLFLAG,#02H
JE ITISZSX
LCALL SAMOK
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
SCALL FINDHL
SHR WIDE,#02H ;WIDE IS SUM 4 TIMES
LDB MAXPA,WIDE
TOFWIDE:LD WIDESTA,WIDESTAH
LCALL FINDWIDE
LDB WIDEH,WIDE
LCALL FINDNUM
LDB WIDENUMH,WIDENUM
LD WIDESTA,WIDESTAL
LCALL FINDWIDE
LDB WIDEL,WIDE
LCALL FINDNUM
LDB WIDENUML,WIDENUM
RET
ITISZSX:LCALL ZSXSAM
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
ADD AX,#CYPOINT
LCALL FINDHL
LD WIDESTA,WIDESTAH
LCALL ZSXSET
LD WIDESTAH,WIDESTA ;NOW YLB MAX ADD
LD AX,WIDESTA
LDB BX,#DIVKEEP
LDB HB,#00H
SUB AX,BX
LDB MAXPA,#00H
LDB BX,#KEEPNUM
LDB HB,#00H
LCALL FINDMAX
LDB MAXPAH,MAXPA
LD WIDESTA,WIDESTAL
LCALL ZSXSET
LD WIDESTAL,WIDESTA ;NOW YLB MAX ADD
LD AX,WIDESTA
LDB BX,#DIVKEEP
LDB HB,#00H
SUB AX,BX
LDB MAXPA,#00H
LDB BX,#KEEPNUM
LDB HB,#00H
LCALL FINDMAX
LDB MAXPAL,MAXPA
SJMP TOFWIDE
;*************** FIND MAXH AND MAXL ***********
;ENTER: AX=DATA ADD
;RETURN: MAXPAH WIDESTAH MAXPAL WIDESTAL
; WIDE IS SUM OF MAXPA
FINDHL: ADDB AX,#DIVKEEP
LDB MAXPA,#00H
LD BX,#FPOINT
LCALL FINDMAX
LDB MAXPAH,MAXPA
LD WIDESTAH,WIDESTA
LDB MAXPAL,MAXPA
LD WIDESTAL,WIDESTA
LDB EH,#03H
LD WIDE,#0000H
LDB WIDE,MAXPA
CTOMAX: LD BX,#FPOINT ;FINT 3 CYCLE
LDB MAXPA,#00H
LCALL FINDMAX
LDBZE CX,MAXPA
ADD WIDE,CX
CMPB MAXPA,MAXPAH
JH FMAXPAH
JE FMAXPAH
CMPB MAXPAL,MAXPA
JH FMAXPAL
DJNZ EH,CTOMAX
RET
FMAXPAH:LDB MAXPAH,MAXPA
LD WIDESTAH,WIDESTA
DJNZ EH,CTOMAX
RET
FMAXPAL:LDB MAXPAL,MAXPA
LD WIDESTAL,WIDESTA
DJNZ EH,CTOMAX
RET
;*********************** FIND WIDE **************
;ENTER: WIDESTA= MAXPA START ADD
;RETURN:WIDE=?
FINDWIDE:
LD AX,WIDESTA
LDB CL,#DIVKEEP
LDB CH,#00H
SUB AX,CX ;AX:ADD BX:COUNT CX:DATA DH:FLAG
LDB WIDE,#00H ;INIT WIDE
LDB DH,#00H ;0 IS FIND >; 1 IS FIND <;
LDB BL,#KEEPNUM ;PROCESS 100
LDB HB,#00H
WIDENEXT:
LDB CL,[AX]+
CMPB DH,#00H
JE FWIDEHIGH
CMPB CL,#PRESS25
JH INCBWIDE
RET
WIDEDECB:
DEC BX
CMP BX,#0000H
JNE WIDENEXT
RET ;RETURN MAXPA WIDE AND WIDENUM
FWIDEHIGH:
CMPB CL,#PRESS25
JH INCBWIDE
SJMP WIDEDECB
INCBWIDE:LDB DH,#01H
INCB WIDE
SJMP WIDEDECB
;**********MOVE DATA******************
;ENTER: AX=SOURCE
; CX=TARGE
; BX=COUNT
MOVEDATA:LDB DL,[AX]
LDB DH,[AX]
CMPB DL,DH
JNE MOVEDATA
LDB DH,[AX]
CMPB DL,DH
JNE MOVEDATA
STB DL,[CX]
LDB DH,[CX]
CMPB DH,DL
JNE MOVEDATA
INC AX
INC CX
DEC BX
CMP BX,#0000H
JNE MOVEDATA
RET
;***********CALCULAE HEADER***********
;RETURN: CX=?
CALCH: LD CX,#COMMNUM
LDBZE DX,SAVENO
MULU CX,DX
ADD CX,#KEEPADD
RET
;***********DISPLAY ZHUAN SU********
; ENTER:CX=ZHS
DISPZHS:PUSH CX
LD CX,#0258H ;600
LD BX,#07FCH ;2044
MULU CX,BX
POP BX
DIVU CX,BX
LD DX,#0000H
LD BX,#03E8H ;DISP 1000
DIVU CX,BX
CMPB CL,#00H
JE ZHSDD
LDBZE DPCHAR,CL
INCB DPLINE
LCALL DISPNUM
DECB DPLINE
ZHSDD: LD CX,DX
LCALL DISPWIDE
RET
;***********DISPLAY 100***********
;ENTER: CX=?
; USE CX,DX
DISPWIDE:PUSH CX
PUSH DX
LDB DL,#64H ;DISP 100
DIVUB CX,DL
LDBZE DPCHAR,CL
INCB DPLINE
LCALL DISPNUM
LDB CL,CH ;DISP 10
LDB CH,#00H
LDB DL,#0AH
DIVUB CX,DL
LDBZE DPCHAR,CL
LCALL DISPNUM
LDBZE DPCHAR,CH ;DISP 1
LCALL DISPNUM
DECB DPLINE
POP DX
POP CX
RET
;***********DISPLAY PRESS***********
;ENTER: MAXPA=?
DISPYL: LDBZE CL,MAXPA ;DISPLAY MAX
CMPB YLFLAG,#01H
JE DISPQM
CMPB YLFLAG,#03H
JE DISPQM
LDB BL,#PR125 ;YLB *125MPa=7d 129=81H
MULUB CL,BL
LDB BL,#0FFH ;/255
DIVUB CX,BL
LDB HB,CH
LDB CH,#00H
LCALL DISPWIDE
SJMP DISPYLNEXT
DISPQM: LDB BL,#PR15 ;QMX *15MPa
MULUB CL,BL
LDB BL,#0FFH ;/255
DIVUB CX,BL
LDB HB,CH
LDB CH,#00H
LDB BL,#0AH
DIVUB CX,BL
LDBZE DPCHAR,CL
INCB DPLINE
LCALL DISPNUM
LDBZE DPCHAR,CH
LCALL DISPNUM
DECB DPLINE
DISPYLNEXT:
INCB DPLINE
LDB DPCHAR,#0EH ;DISP .
LCALL DISPNUM
LDB CL,HB ;DISP .1
LDB BL,#0AH
MULUB CL,BL
LDB BL,#0FFH ;/255
DIVUB CX,BL
LDBZE DPCHAR,CL
LCALL DISPNUM
DECB DPLINE
CMPB YLFLAG,#01H
JE DISPQMN
CMPB YLFLAG,#03H
JE DISPQMN
RET ;IS YLB RETURN
DISPQMN:LDB CL,CH ;DISP .01
LDB BL,#0AH
MULUB CL,BL
LDB BL,#0FFH ;/255
DIVUB CX,BL
LDBZE DPCHAR,CL
INCB DPLINE
LCALL DISPNUM
DECB DPLINE
RET
;*********************** FIND WIDENUM **************
;ENTER: WIDESTA= MAXPA START ADD
;RETURN:WIDENUM=?
FINDNUM:
LD AX,WIDESTA
LDB CL,#DIVKEEP
LDB CH,#00H
SUB AX,CX ;AX:ADD BX:COUNT CX:DATA DH:FLAG
LDB WIDENUM,#00H ;INIT WIDE NUM
LDB DH,#00H ;0 IS FIND >; 1 IS FIND <;
LDB BL,#KEEPNUM ;PROCESS 100
LDB HB,#00H
WNUMNEXT:
LDB CL,[AX]+
CMPB DH,#00H
JE FHIGH
CMPB CL,#TNINE
JH WNDEC
LDB DH,#00H
INCB WIDENUM
WNDEC: DEC BX
CMP BX,#0000H
JNE WNUMNEXT
RET ;RETURN MAXPA WIDE AND WIDENUM
FHIGH: CMPB CL,#TWFIVE
JH HTWFIVE
SJMP WNDEC
HTWFIVE:LDB DH,#01H
SJMP WNDEC
;***********DISPLAY RESULT***********
DISPRES:LCALL CLEAR
LD DPLINE,#0900H
LD DPSTRING,#GANG ;DISPLAY GANG HAO
LCALL STRING
LDB BL,#02H
LDB AL,#GANGHAOL
LDB AH,#00H
INCB DPLINE
DGANG: LDBZE DPCHAR,[AX]+
LCALL DISPNUM
DJNZ BL,DGANG
DECB DPLINE
INCB DPCLUM
LD DPLINE,#0000H
LD DPSTRING,#ZHUANSU ;ZHUAN SU
LCALL STRING
LD CX,ZHS
LCALL DISPZHS
LD DPLINE,#0002H
LD DPSTRING,#YALI
LCALL STRING
LDB MAXPA,MAXPAH
LCALL DISPYL
INCB DPCLUM
LDB MAXPA,MAXPAL
LCALL DISPYL
CMPB YLFLAG,#01H
JE DPHH
CMPB YLFLAG,#03H
JE DPHH
LD DPLINE,#0004H
LD DPSTRING,#JIAODU ;DISPLAY JIAODU
LCALL STRING
LDBZE CX,WIDEH
LCALL DISPWIDE
ADDB DPCLUM,#03H
LDBZE CX,WIDEL
LCALL DISPWIDE
LD DPLINE,#0604H
LDBZE DPCHAR,WIDENUMH
LCALL DISPNUM
LD DPLINE,#0C04H
LDBZE DPCHAR,WIDENUML
LCALL DISPNUM
DPYORN: LD DPLINE,#0106H
LD DPSTRING,#HAO ;DISP HAO HUAI
LDBZE AX,GOOD
SHL AX,#01H
ADD DPSTRING,AX
LCALL STRING
RET
DPHH: LD DPLINE,#0504H
LDB MAXPA,WIDENUMH
LCALL DISPYL
SJMP DPYORN
;***********INIT GANGHAO******************
INITGANG:LCALL CALCH
LDB DL,#00H ;WRITE A NOT TESTED FLAG
STB DL,[CX]
ADD CX,#HEADERN
LDB AL,#KEEPNUM
LDB AH,#00H
SHL AX,#0001H ;200POINT
ADD AX,#RECHEADER
LDB BL,#10H
INITNEXT:LDB DL,#00H ;WRITE A NOT TESTED FLAG
STB DL,[CX]
ADD CX,AX
DJNZ BL,INITNEXT
RET
;***********CALCULATE GANGHAO ADDR***********
;RETURN CX=?
CALCR: PUSH BX
PUSH DX
LDB CL,#GANGHAOL
LDB CH,#00H
LDB BL,[CX]+
LDB DL,#0AH
MULUB BL,DL
LDB DL,[CX]
ADDB BL,DL
DECB BL
LDB CL,#KEEPNUM
LDB CH,#00H
SHL CX,#0001H
ADD CX,#RECHEADER
LDB HB,#00H
MULU CX,BX
LD BX,CX
LCALL CALCH
ADD CX,#HEADERN
ADD CX,BX ;CALC THE GANGHAO ADDRESS
POP DX
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -