📄 t25.asm
字号:
LDB BL,#08H
SUBB DPCHAR,#41H
MULUB BL,DPCHAR
ADD DPSTRING,BX
LDB BL,#08H
INC DPTEMP
CNEXT: LDB DPCHAR,[DPSTRING]+
STB DPCHAR,[DPTEMP]
DJNZ BL,CNEXT
POP BX
POP DPLINE
POP DPSTRING
INCB DPCLUM
RET
;************DISPLAY STRING **************
;ENTER: DPSTRING = DISP STRING OFFSET
; ;THE STRING IS ENDED BY #0FFH
; DPLINE=LINE DPCLUM= COLUME
STRING: LDB DPCHAR,[DPSTRING]+
CMPB DPCHAR,#0FFH
JE FISHDP
CMPB DPCHAR,#7FH ;HANZI
JH DPHANZI
CMPB DPCHAR,#40H ;CHAR
JH DPZIMU
CMPB DPCHAR,#3FH
JE DPWEN
CMPB DPCHAR,#2FH
JH DPNUM
CMPB DPCHAR,#21H
JE DPTAN
CMPB DPCHAR,#2DH
JE DPJIAN
CMPB DPCHAR,#2EH
JE DPDIAN
CMPB DPCHAR,#20H
JE DPSPACE
SJMP STRING
FISHDP: RET
DPHANZI:PUSH DPSTRING
PUSH DPLINE
PUSH BX
LD DPSTRING,#HZTAB
SUBB DPCHAR,#80H
LDB BL,#20H
MULUB BL,DPCHAR
ADD DPSTRING,BX
LCALL HANZI
POP BX
POP DPLINE
POP DPSTRING
ADDB DPCLUM,#02H
LJMP STRING
DPZIMU: INCB DPLINE
LCALL DISPCH
DECB DPLINE
LJMP STRING
DPNUM: SUBB DPCHAR,#30H
SJMP DPANOTHER
DPTAN: LDB DPCHAR,#0CH
SJMP DPANOTHER
DPJIAN: LDB DPCHAR,#0DH
SJMP DPANOTHER
DPDIAN: LDB DPCHAR,#0EH
SJMP DPANOTHER
DPWEN: LDB DPCHAR,#0FH
SJMP DPANOTHER
DPSPACE:LDB DPCHAR,#10H
DPANOTHER:
INCB DPLINE
LCALL DISPNUM
DECB DPLINE
LJMP STRING
;***********SAMPLE PROC******************
SAMPLE: LCALL CLEAR
LD ADRESULT,#KEEPADD
LD SAVENO,#0000H
CMPSAMNEXT:
LDB DL,[ADRESULT]
CMPB DL,#0AAH
JNE BEGINSAM
LD AX,ADRESULT
INC AX
LDB DL,[AX]+
CMPB DL,#03H
JH BEGINSAM
ADD ADRESULT,#COMMNUM
INC SAVENO
CMPB SAVENO,#05H
JNH CMPSAMNEXT
LCALL SELEJCH
BEGINSAM:
LCALL CLEAR
LD DPLINE,#0000H
LD DPSTRING,#TRAIN ;SHU RU JI CHE HAO
SCALL STRING
LDB BL,#04H
LDB AL,#TRAINNO
LDB AH,#00H
INCB DPLINE
INTRAIN:LCALL INKEY
CMPB KEY,#09H
JH BEGINSAM
LDBZE DPCHAR,KEY
LCALL DISPNUM
STB KEY,[AX]+
DJNZ BL,INTRAIN
LCALL INITGANG
NGANG: LCALL RDATE ;READ THE DATE & TIME
LCALL DISPDATE
LD DPLINE,#0002H
LD DPSTRING,#GANG ;SHU RU GANG HAO
LCALL STRING
LDB BL,#02H
LDB AL,#GANGHAOL
LDB AH,#00H
INCB DPLINE
INGANG: LCALL INKEY
LDBZE DPCHAR,KEY
LCALL DISPNUM
STB KEY,[AX]+
DJNZ BL,INGANG
JUDGE: LDB AL,#GANGHAOL
LDB AH,#00H
LDB BL,[AX]+
CMPB BL,#01H
JH NGANG
CMPB BL,#00H
JE JUDGENEXT
LDB BL,[AX]
CMPB BL,#06H
JH NGANG
LJMP JUDGEOK
JUDGENEXT:LDB BL,[AX]
CMPB BL,#09H
JH NGANG
CMPB BL,#00H
JE NGANG
JUDGEOK:LCALL RDATE ;READ THE DATE & TIME
LDB EH,#03H ;2 TIME TO FIND T
LCALL SAMFINDT ;
LDB GOOD,#00H ;INIT IS GOOD
CMP ZHS,#0000H
JE NOZHS
SJMP ZHSOK
NOZHS: LD ZHS,#T600
; LDB GOOD,#01H
ZHSOK: LCALL SAMMW ;FIND MAX AND WIDE
LCALL OKORNO ;JUDGE HAO HUAI
LCALL DISPRES ;DISPLAY RESULT
LD DPLINE,#0406H
LD DPSTRING,#BAOCUN ;DISPLAY SELECT
LCALL STRING
LD DELAYCYCLE,#0FFFFH
DELAYKEY:DEC DELAYCYCLE
CMP DELAYCYCLE,#0000H
JE NOKEY
LDB AX,#05H
DJNZ AX,$
LD KEYTEMP,#1001H
LDB KEYSTAT,[KEYTEMP]
ANDB KEYSTAT,#07H
JE DELAYKEY
LDB KEYSTAT,#40H ;SET FIFO READ
STB KEYSTAT,[KEYTEMP]
LD KEYTEMP,#1000H
LDB KEYSTAT,[KEYTEMP]
CMPB KEYSTAT,#01H ;'B'=01H NOT CHANGED
JE CP
NOKEY: LCALL CLEAR
LJMP JUDGEOK
CP: LCALL WDATA
SAMSELE:LCALL CLEAR
LD DPLINE,#0400H
LD DPSTRING,#CESHI ;DISPLAY SELECT
LCALL STRING
LD DPLINE,#0402H
LD DPSTRING,#BIEGANG ;DISPLAY SELECT
LCALL STRING
LD DPLINE,#0404H
LD DPSTRING,#FANHUI
LCALL STRING
LD DPLINE,#0406H
LD DPSTRING,#XUANZE
LCALL STRING
LCALL INKEY
CMPB KEY,#0FH
JE OKSAM
LCALL CLEAR
CMPB KEY,#0AH
JE INCGANG
LJMP NGANG
INCGANG:ADD GANGHAOL,#0100H
CMP GANGHAOL,#0A00H
JE INCHI
LDB CL,GANGHAOH
LDB CH,GANGHAOL
CMP CX,#0106H
JH SAMSELE
LJMP JUDGE
INCHI: LD GANGHAOL,#0001H
LJMP JUDGE
OKSAM: RET
;************** QMX X QMXXSH **********
QMXX: LDB AL,MAXPA
LDB CL,#QMXXSH
MULUB CL,AL
LDB BL,#64H
DIVUB CX,BL
CMPB CH,#31H
JNH QMXXADD
INCB CL
QMXXADD:LDB MAXPA,CL
RET
;************** QMX X QMXXSH **********
QMSHJX: LDB AX,#DIVKEEP
LDB AH,#00H
SUB WIDESTA,AX
LD AX,WIDESTA
LDB BL,#KEEPNUM
LDB HB,#00H
QMXXAG: LDB DL,[AX]
LDB CL,#QMXXSH
MULUB CL,DL
LDB DL,#64H
DIVUB CX,DL
CMPB CH,#31H
JNH QMSHJADD
INCB CL
QMSHJADD:STB CL,[AX]
INC AX
DEC BX
CMP BX,#0000H
JNE QMXXAG
RET
;************** JUDGE HAO OR HUAI**********
OKORNO: CMPB YLFLAG,#00H
JE YLBOKORNO
CMPB YLFLAG,#02H
JE YLBOKORNO
CMPB YLFLAG,#03H
JE BFLOKORNO
LDB WIDENUMH,MAXPA
LDB MAXPA,MAXPAH
SCALL QMXX
LDB MAXPAH,MAXPA
LDB MAXPA,MAXPAL
SCALL QMXX
LDB MAXPAL,MAXPA
LDB MAXPA,WIDENUMH
SCALL QMXX
LDB WIDENUMH,MAXPA
; LD WIDESTA,WIDESTAH ;MAX 100
; SCALL QMSHJX
; LD WIDESTA,WIDESTAL ;MIN 100
; SCALL QMSHJX
CMPB MAXPA,#QMGM1
JH QMISNO
CMPB MAXPA,#QMGM2
JNH QMISNO
RET
QMISNO: LDB GOOD,#01H
RET
BFLOKORNO:
LDB WIDENUMH,MAXPA
CMPB MAXPA,#BFGM1
JH BFISNO
CMPB MAXPA,#BFGM2
JNH BFISNO
RET
BFISNO: LDB GOOD,#01H
RET
YLBOKORNO:
CMPB WIDENUMH,#01H
JH ITISNO
CMPB WIDENUML,#01H
JH ITISNO
LDB AL,MAXPAH ;CONDITON 1 (GM+GN)/2<=40
LDB AH,#00H
LDB BL,MAXPAL
LDB HB,#00H
ADD AX,BX
SHR AX,#01H
CMPB AX,#GM11 ;CONDITON 1 GM<=40
JNH ITISNO
LDB AX,MAXPAH ;CONDITON 2 GM-GN>20
LDB BX,MAXPAL
SUBB AX,BX
CMPB AX,#GM21
JH ITISNO
LDB AX,WIDEH ;CONDITON 3 KM-KN>10
LDB BX,WIDEL
CMPB AX,BX
JH KMSKN
LDB CX,AX
LDB AX,BX
LDB BX,CX
KMSKN: SUBB AX,BX
CMPB AX,#KM31
JH ITISNO
LDB AX,WIDEH ;CONDITON 4 (KM+KN)/2<=11
ADDB AX,WIDEL
SHRB AX,#01H
CMPB AX,#KM41
JNH ITISNO
CMPB MAXPAH,#GM51
JH GM100
CMPB AX,#KM51 ;CONDITON 5 (KM+KN)/2>35
JH ITISNO
RET
GM100: CMPB AX,#KM61 ;CONDITON 6 (KM+KN)/2>40
JH ITISNO
RET
ITISNO: LDB GOOD,#01H
RET
;***********SAM FIND T******************
;ENTER:EH=TIMES TO FIND T
;RETURN:ZHS=?
;*************************************
SAMFINDT:
LD ZHS,#0000H
DJNZ EH,TRYFT
RET
TRYFT: LDB DELAYCYCLE,#01H
LD ADRESULT,#BUFFADD
LD ADTIMES,#TPOINT
SCALL ADC
LD BX,#TPOINT ;PROCESS 8000
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
LDB MAXPA,#TLHI1
SCALL FINDPOINT
CMP ZHS,#0000H
JE SAMFINDT
LD MAXPAH,ZHS
LD BX,#TPOINT ;PROCESS 8000
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
LDB MAXPA,#TLHI2
SCALL FINDPOINT
ADD MAXPAH,ZHS
LD BX,#TPOINT ;PROCESS 8000
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
LDB MAXPA,#TLHI3
SCALL FINDPOINT
ADD MAXPAH,ZHS
LD BX,#TPOINT ;PROCESS 8000
LD AX,#BUFFADD ;PROCESS DATA FIND HIGHEST
LDB MAXPA,#TLHI4
SCALL FINDPOINT
ADD MAXPAH,ZHS
LD CX,MAXPAH
SHR CX,#02H
LD ZHS,CX
CMP CX,#CYLOW
JNH SAMFINDT
CMP CX,#CYHI
JH SAMFINDT
LCALL CLEAR
LD DPLINE,#0002H
LD DPSTRING,#ZHUANSU ;ZHUAN SU
SCALL STRING
LD CX,ZHS ;DISPLAY ZHUAN SU
LCALL DISPZHS
RET
;***************** FIND T POINT **************
;ENTER: MAXPA= TLHI
; AX=BUFFADD,BX=COUNT
;*********************************************
FINDPOINT:
LDB DH,#01H ;0 IS FIND >; 1 IS FIND <;
LD WIDESTA,#0000H
FINDT: LDB CL,[AX]+
CMPB DH,#00H
JE FHIGHT
CMPB CL,#TLLOW
JH NEXTT
LDB DH,#00H
NEXTT: DEC BX
CMP BX,#0000H
JNE FINDT
LD WIDESTA,#0000H
SJMP FTOK
FHIGHT: CMPB CL,MAXPA ;CMPB #TLHI
JH HTT
JE HTT
SJMP NEXTT
HTT: LDB DH,#01H
CMP WIDESTA,#0000H
JNE FTOK
ST AX,WIDESTA
SJMP NEXTT
FTOK: CMP WIDESTA,#0000H
JE FTNO
LD CX,AX
SUB CX,WIDESTA
CMP CX,#CYHI
JH FTNO
LD ZHS,CX
RET
FTNO: LD ZHS,#0000H
RET
;************AD CHANGE PROC***********
;USE CHANEL 4
;ENTER: ADTIMES ;A/D CHANGE TIMES
; ADRESULT ;A/D RESULT OFFSET
;TIME=171+[(DELAYCYCLE-1)*9+5]=186+DELAYCYCLE*9
;ONE POINT=556T(278us)
;************************************
ADC: PUSH ADRESULT
PUSH DX
LDB DL,#00H
ADBEG: LDB AD_COM,ADCH ;4
LDB ADREAD,#0BH ;4
ADBUSY: DJNZ ADREAD,ADBUSY ;(11-1)*9+5=95
LDB ADREAD,AD_RESHI ;4
CMPB DL,#00H ;4
JE ADOFFSET ;8 OR 4
STB ADREAD,[ADRESULT]+ ;4+12
LDB DL,#00H ;4
SJMP ADNEXT ;8
ADOFFSET:STB ADREAD,[ADRESULT]+ ;8+12
LDB DL,#01H ;4
NOP ;4
ADNEXT: PUSH DELAYCYCLE ;8
ADDELAY:DJNZ DELAYCYCLE,ADDELAY ;(DELAYCYCLE-1)*9+5
POP DELAYCYCLE ;12
DEC ADTIMES ;4
JNE ADBEG ;8
POP DX
POP ADRESULT
RET
;***********DELAY TIME PROC************
;SOFTWARE DELAY TIME
;ENTER: DELAYCYCLE ;DELAY NUM T STATS:(NUM*28+12+13)/2=N(us)
;**************************************
DELAY: NOP
NOP
NOP
NOP
DEC DELAYCYCLE
JNE DELAY
RET
;***********SAMPLE CYPOINT**************
;ISURE COMPLETED
;ADCH=0CH PRESS
; =0DH QIMI
;ZHS=
;****************************************
SAMOK: LD CX,ZHS
LD ADTIMES,#CYPOINT ;SAMPLE 4000 POINT
LD BX,#00C4H ;196T
MULU CX,BX
LD BX,#02D0H ;720
DIVU CX,BX
SUB CX,#00BAH ;-186
LDB BL,#0AH ;/10
DIVUB CX,BL
CMPB CH,#05H ;>=5 +1
JNH TADD1
INCB CL
TADD1: LDB DELAYCYCLE,CL
LD ADRESULT,#BUFFADD
PUSH ADTIMES
SCALL ADC
POP ADTIMES
LD AX,#BUFFADD
LD BX,ADTIMES
RET
;***********SAMPLE ZHSHX**************
;ADCH=0CH PRESS
; =0DH QIMI
; ZHS
;****************************************
ZSXSAM: LD CX,ZHS
LD BX,#00C4H ;196T
MULU CX,BX
LD BX,#05A0H ;1440
DIVU CX,BX
SUB CX,#00BAH ;-186
LDB BL,#0AH ;/10
DIVUB CX,BL
LDB DELAYCYCLE,CL
LDB ZSXWC,CH ;SAVE THE ZSX WUCHA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -