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

📄 hco00_00.asm

📁 用于电力系统自动化的逸精显示界面的ASM 编程
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        LD MEX,MFX
        CLR MFX
        DIVU MEX,#100
        STB MEX,N100[0]
        LD MEX,MFX
        CLR MFX
        DIVU MEX,#10
        STB MEX,N10[0]
        STB MFX,N1[0]
        LDB MBX,N1[0]
        LDB MBH,N10[0]
        LDB MCX,N100[0]
        LDB MCH,N1000[0]
        LD MFX,MODMFX[0]
        RET

AORS:   CLRB MDXH
        LDB MAX,X_BYTE[MDX]
        CLRB MAXH
        LDB MDX,[MAX]
AORS1:  CMPB MDX,#10
        JLT AORS11
        LDB MDX,#9
        SJMP L2
AORS11: JBS FLAGP4,5,L1
        DECB MDX
        SJMP L2
L1:     INCB MDX
L2:     STB MDX,[MAX]
        ANDB FLAGP4,#0DFH
        RET

DEAL:   ST MFX,MODMFX[0]
        LDB MFX,#4
        CLR MDX
DEAL02: LDB MAX,X_BYTE[MDX]
        LDB MFXH,[MAX]
        CMPB MFXH,#9
        JGT DEAL01
        CMPB MFXH,#0
        JLT DEAL01
        INC MDX
        DJNZ MFX,DEAL02
        CLR MDX
        LDB MDX,MCH
        MULU MEX,MDX,#1000
        MULB MDX,MCX,#100
        ADD MEX,MDX
        CLR MDX
        LDB MDX,MBH
        MULB MDX,#10
        ADD MEX,MDX
        EXTB MBX
        ADD MEX,MBX
        SJMP RET0
DEAL01: LD MEX,MPNT
RET0:   LD MFX,MODMFX[0]
        RET

POS1:   JBS FLAGP4,3,PL1
        SJMP PLRET
PL1:    CLR MBX
        LDB MAXH,MAX
PL3:    LDB MCX,X_KEYPOS[MBX]
        ANDB MAXH,MCX
        JE PL2
        LDB MAXH,MAX
        INCB MBX
        CMPB MBX,#5
        JLE PL3
        SJMP PLRET
PL2:    ORB FLAGP4,X_DIR[MBX]
        SHL MBX,#1
        LD MCX,X_CALL[MBX]
        CALL PL4
PLRET:  RET
PL4:    BR [MCX]

POS:    CLR MBX
        CLR MCX
        LDB MAXH,MAX
P2:     LDB MCX,X_KEYPOS[MBX]
        ANDB MAXH,MCX
        JE P1
        LDB MAXH,MAX
        INCB MBX
        CMPB MBX,#3
        JLE P2
        SJMP PRET
P1:     LDB MCX,X_CMBYTE[MBX]
        LDB MDXH,[MCX]
        LDB MDX,X_CMPOS[MBX]
        CMPB MDXH,MDX
        JE P3
        ADDB MDXH,X_CMMOVE[MBX]
        STB MDXH,[MCX]
P3:     CALL CLCURSOR
        CALL SETCURSOR
PRET:   RET

HEXTODEC:
        ST MAX,HEXTMAX[R0]
        ST MBX,HEXTMBX[R0]
        ST MCX,HEXTMCX[R0]
        ST MDX,HEXTMDX[R0]
        ST MEX,HEXTMEX[R0]
        ST MFX,HEXTMFX[R0]
        LD MCX,#86A0H
        LD MDX,#1H
        CLR MEX
GETIPF03:CMPL MCX,MAX
        JH GETIPF01
        INC MEX
        SUB MAX,MCX
        SUBC MBX,MDX
        SJMP GETIPF03
GETIPF01:CLR MFX
        DIV MEX,#10
        ST MEX,MILLION[R0]
        ST MFX,HUNTHOUS[R0]

        DIV MAX,#10000
        ST MAX,TENTHOUS[R0]
        LD MAX,MBX
        CLR MBX
        DIV MAX,#10

        ST MBX,ONEBYTE[R0]
        CLR MBX
        DIV MAX,#10
        ST MBX,TENBYTE[R0]
        CLR MBX
        DIV MAX,#10
        ST MBX,HUNDRY[R0]
        ST MAX,THOUSAND[R0]

        LD MFX,HEXTMFX[R0]
        LD MEX,HEXTMEX[R0]
        LD MDX,HEXTMDX[R0]
        LD MCX,HEXTMCX[R0]
        LD MBX,HEXTMBX[R0]
        LD MAX,HEXTMAX[R0]
        RET


XSASCII:st max,xascmax[r0]
        st mpnt,xascmpnt[r0]
        st mcnt,xascmcnt[r0]
        st mcx,xascmcx[r0]
        st mdx,xascmdx[r0]
        decb max
        shlb max,#1
        decb maxh
        shlb maxh,#3
        clrb mcnth
        CMPB MAXH,#63
        JH XAS001
XAS002: CALL SETM202P
        LDB MCNT,#8
XAS003: LDB MCXH,[Mpnt]+
xasa02: LDB MCX,STAM202[R0]
        jbs mcx,7,xasa02
        STB MCXH,WDAM202[R0]
        DJNZ MCNT,XAS003
        incb max
        ldb mcnt,#8
        CALL SETM202P

XASa03: LDB MCXH,[Mpnt]+
xasa04: LDB MCX,STAM202[R0]
        ANDB MCX,#10010000B
        JNE XASa04
        STB MCXH,WDAM202[R0]
        DJNZ MCNT,XASa03
        sjmp xasquit

XAS001: SUBB MAXH,#64
xas006: CALL SETS202P
        LDB MCNT,#8
XAS005: LDB MCX,[Mpnt]+
XASa06: LDB MCXh,STAS202[R0]
        jbs mcxh,7,xasa06
        STB MCX,WDAS202[R0]
        DJNZ MCNT,XAS005
        incb max
        LDB MCNT,#8
        CALL SETS202P
xas007: LDB MCX,[Mpnt]+
XASa07: LDB MCXh,STAS202[R0]
        jbs mcxh,7,xasa07
        STB MCX,WDAS202[R0]
        DJNZ MCNT,XAS007
xasquit:ld max,xascmax[r0]
        ld mcx,xascmcx[r0]
        ld mdx,xascmdx[r0]
        ld mpnt,xascmpnt[r0]
        ld mcnt,xascmcnt[r0]
        RET

XNUMBER:ST MAX,XNUMAX[R0]
        ST MBX,XNUMBX[R0]
        ST MCX,XNUMCX[R0]
        ST MDX,XNUMDX[R0]
        ST MCNT,XNUMCNT[R0]
        ST MPNT,XNUMPNT[0]
        LDB MBX,MCNTH
        DECB MBX
        MULB MBX,#2
        SUB MBX,#ONEBYTE
        NEG MBX
XNUM01:
        CMPB MCNTH,DIPBIT[R0]
        JNE XNUM02
        LD MPNT,#DIPF
        CALL XSASCII
        ADDB MAXH,#1
XNUM02:
        LD MPNT,[MBX]+
        MULB MPNT,#16
        ADD MPNT,#TABDATA
        CALL XSASCII
        ADDB MAXH,#1
        DJNZ MCNTH,XNUM01
        LD MAX,XNUMAX[R0]
        LD MBX,XNUMBX[R0]
        LD MCX,XNUMCX[R0]
        LD MDX,XNUMDX[R0]
        LD MCNT,XNUMCNT[R0]
        LD MPNT,XNUMPNT[R0]
        RET

CLEAR:  ST MAX,CLEMAX[R0]
        ST MBX,CLEMBX[R0]
        ST MCNT,CLEMCNT[R0]
        CLR MAX
        LDB MCNTH,#8
CLEAR04:CALL SETM202P
        LDB MCNT,#64
CLEAR03:LDB MBX,STAM202[R0]
        JBS MBX,7,CLEAR03
        STB R0,WDAM202[R0]
        DJNZ MCNT,CLEAR03
        INCB MAX
        DJNZ MCNTH,CLEAR04

        CLR MAX
        LDB MCNTH,#8
CLEAS04:CALL SETS202P
        LDB MCNT,#64
CLEAS03:LDB MBX,STAS202[R0]
        JBS MBX,7,CLEAS03
        STB R0,WDAS202[R0]
        DJNZ MCNT,CLEAS03
        INCB MAX
        DJNZ MCNTH,CLEAS04
        LD MAX,#0FFFFH
        ST MAX,POSCURSOR[R0]
        LDB MAXH,#0C0H
CLEAMBUSY:LDB MAX,STAM202[R0]
        JBS MAX,7,CLEAMBUSY
        STB MAXH,SHHM202[R0]
CLEASBUSY:LDB MAX,STAS202[R0]
        JBS MAX,7,CLEASBUSY
        STB MAXH,SHHS202[R0]
        LD MAX,CLEMAX[R0]
        LD MBX,CLEMBX[R0]
        LD MCNT,CLEMCNT[R0]
        RET

qdlight:st max,qdsmax[r0]
        ldb maxh,#00111111b
qdlight1:ldb max,stam202[r0]
        jbs max,7,qdlight1
        stb maxh,qdm202[r0]
qdlight2:ldb max,stas202[r0]
        jbs max,7,qdlight2
        stb maxh,qds202[r0]
        LDB MAXH,#0C0H
QDSMBUSY:LDB MAX,STAM202[R0]
        JBS MAX,7,QDSMBUSY
        STB MAXH,SHHM202[R0]
QDSSBUSY:LDB MAX,STAS202[R0]
        JBS MAX,7,QDSSBUSY
        STB MAXH,SHHS202[R0]
        ld max,qdsmax[r0]
        ret
SETM202P:ST MBX,SETMPMBX[R0]
        LDB MBXH,MAX
        ORB MBXH,#10111000B
SETM2021:LDB MBX,STAM202[R0]
        jbs mbx,7,setm2021
        STB MBXH,SETPAM202[R0]
        LDB MBXH,MAXH
        ORB MBXH,#01000000B
SETM2022:LDB MBX,STAM202[R0]
        jbs mbx,7,setm2022
        STB MBXH,SETADDM202[R0]
        LD MBX,SETMPMBX[R0]
        RET

SETS202P:ST MBX,SETSPMBX[R0]
        LDB MBXH,MAX
        ORB MBXH,#10111000B
SETS2021:LDB MBX,STAS202[R0]
        jbs mbx,7,sets2021
        STB MBXH,SETPAS202[R0]
        LDB MBXH,MAXH
        ORB MBXH,#01000000B
SETS2022:LDB MBX,STAS202[R0]
        jbs  mbx,7,sets2022
        STB MBXH,SETADDS202[R0]
        LD MBX,SETSPMBX[R0]
        RET


XSHHZ:  st max,Xhzmax[r0]
        st mbx,xhzmbx[r0]
        st mcx,xhzmcx[r0]
        st mdx,xhzmdx[r0]
        st mcnt,xhzmcnt[r0]
        st mpnt,xhzmpnt[r0]
        ldb mcnt,forlength[mpnt]
        SHL MPNT,#1
        LD Mpnt,forline[MPNT]
        clrb maxh
        DECB MAX
        shlb max,#1
        SHLB MAXh,#4
xhz003: ldb mbx,[mpnt]+
        mulUb mbx,#32
        add mbx,#tabhz
        ldB MCNTH,#2
        CMPB MAXH,#63
        JH XHZ001
XHZ002: CALL SETM202P
        LDB Mdx,#16
xhz005: LDB MCX,[MBX]+
xhz004: ldb mcxh,stam202[r0]
        jbs mcxh,7,xhz004
        STB MCX,WDAM202[R0]
        DJNZ Mdx,XHZ005
        incb max
        djnz mcnth,xhz002
        SUBB MAX,#2
        addb maxh,#16
        djnz mcnt,xhz003
        sjmp xhzquit

XHZ001: subb maxh,#64
XHZ008: CALL SETS202P
        LDB Mdx,#16
XHZ007: LDB MCX,[MBX]+
xhz006: ldb mcxh,stas202[r0]
        jbs mcxh,7,xhz006
        STB MCX,WDAS202[R0]
        DJNZ Mdx,XHZ007
        INCB Max
        djnz mcnth,xhz008
        SUBB MAX,#2
        addb maxh,#80
        djnz mcnt,xhz003
XHZQUIT:ld mpnt,xhzmpnt[r0]
        LD MCNT,XHZMCNT[R0]
        ld mdx,xHZmdx[r0]
        ld mcx,xHZmcx[r0]
        ld mbx,xHZmbx[r0]
        ld max,xHZmax[r0]
        RET


CLKINT: PUSHF
        CMP BLIGHT,R0
        JNE RET3
        ANDB FLAGP4,#0E1H
        ANDB FLAGP5,#0FEH
        LD ADDRBR1,#SUREP1
        SJMP RET4
RET3:   DEC BLIGHT
RET4:   INC TIME
        ANDB CLKAXH,CLKAXH
        JE RET5
        DECB CLKAXH
RET5:   NOP
        LD CLKBX,TIMER2
        SHR CLKBX,#6
        STB CLKBX,[PWD]
        INCB PWDL
        STB R0,[PWD]
        INCB PWDL
        POPF
RET1:   RET

ACQ:    PUSHF
        STB R0,ADWDRST[R0]
        LDB HSOCOM,#38H
        ADD HSOTIM,TIMER1,#263H
DETECT: LDB ACQAX,BA1400H[R0]
        LDB ACQBX,ACQAX
        XORB ACQAX,ADORDER[R0]
        ANDB ACQDX,SW4,SW5
        ANDB ACQDX,SW6
        LDB SW4,SW5
        LDB SW5,SW6
        LDB SW6,ACQAX
        ANDB ACQAX,ACQDX
        JE NOCHANGE
        XORB ACQBX,ACQAX
        XORB SW4,ACQAX
        XORB SW5,ACQAX
        XORB SW6,ACQAX
        STB ACQBX,BA1400H[R0]
        LDB ACQCX,BA14CHA[R0]
        ORB ACQCX,ACQAX
        STB ACQCX,BA14CHA[R0]
        LDB HSOCOM,#23H
        ADD HSOTIM,TIMER1,#0003H
        LD BLIGHT,#1000
NOCHANGE:CMP BLIGHT,R0
        JNE ACQ0
        LDB HSOCOM,#03H
        ADD HSOTIM,TIMER1,#0003H
ACQ0:   NOP
        NOP
        NOP
        POPF
        RET


X_MPNT:         DCB     0,4,8,12,16,20,24,28,32,36,40,40,44,48,52,56,60,65;(18)
                DCB     69,76,80,84,88,92,101,104,108
X_MLOOP:        DCB     4,4,4,4,4,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4;(25)
                DCB     4,4
X_KEYPOS:       DCB     80H,40H,8,2,1,20H
X_CMBYTE:       DCB     CMAX,CMAX,CMAXH,CMAXH
X_CMPOS:        DCB     1,4,9,1
X_CMMOVE:       DCB     -1,1,8,-8
X_DZPOS:        DCW     0101H,0901H,0102H,0902H,0103H,0903H,0104H,0904H
X_CALL:         DCW     CALLUP,CALLDOWN,CALLRHT,CALLLEFT,CALLADD,CALLADD
X_NUM:          DCB     0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
                DCB     0,0,0
X_MAX:          DCW     1003H,1003H,1003H
X_MPNT1:        DCW     ASS,ASS,ASS
X_BR:           DCW     BRISW,BRKSW,BRTSW,BRIJW,BRKJW,BRTJW,BRIFQ,BRKFQ
                DCW     BRTFQ,BRPTBL1,BRPTBL2,BRCTBL1,BRCTBL2,BRWORD,BRNUM
X_MAX1:         DCW     0B01H,0B02H,0B03H,0B01H,0B02H,0B03H,0B01H,0B02H
                DCW     0B03H,0C01H,0C02H,0C03H,0C04H,0C01H,0C01H
X_MEX:          DCB     2,2,2,2,2,2,2,2,2,0,0,0,0,0,0
X_NUM1:         DCB     0,0,0,0,0,0,3,3,3,4,0,0,1,0,0,0,0,0,1,0,0,0,0,0
                DCB     0,0,0
X_NUM2:         DCB     0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0
                DCB     0,0,0
X_MAX2:         DCW     0F01H,0F02H,0F03H
X_KW:           DCW     BRKW1,BRKW1,BRKW1
X_BIT:          DCB     01H,02H,04H
X_MAX3:         DCB     01H,02H,03H,04H
X_NUM3:         DCB     11,12,13,14,15
X_BYTE:         DCB     MCXH,MCX,MBXH,MBX
X_DIR:          DCB     80H,0,40H,0,20H,0
NEXT:           DCW     SUREP2,STATUS,ZZFG,SUREP1
NEXT1:          DCW     RECORD,OPERATION,TELECOM,VERSION
NEXT2:          DCW     CHAP23,DZGUHUA
NEXT3:          DCW     CHAP25,PASS
SOE_CODE:       DCB     69,70,66,67,68,0FFH
SOE_MPNT:       DCB     70H,71H,72H,73H,74H
X_XSJM:         DCW     STAR0,STAR1,STAR2,STAR3
WDTB:   DCW 0,93,194,296,398,500,607,705,808,912,1015,1120
        DCW 1223,1329,1433,1538,1644,1750,1857,1962,2073
;***************************************************************************

;***************************************************************************
                ORG 5000H
TABHZ:
hz00:   dcb     010h,010h,010h,0ffh,090h,0f0h,0a0h,0aeh
        dcb     0eah,00ah,0eah,0afh,0a2h,0f0h,020h,000h
        dcb     002h,042h,081h,07fh,004h,044h,024h,014h
        dcb     00ch,0ffh,00ch,014h,024h,066h,024h,000h
hz01:   dcb     080h,040h,020h,0f8h,087h,040h,030h,00fh
        dcb     0f8h,088h,088h,088h,088h,0cch,088h,000h
        dcb     000h,000h,000h,0ffh,000h,000h,000h,000h
        dcb     0ffh,008h,008h,008h,008h,008h,000h,000h
hz02:   dcb     010h,00ch,004h,024h,024h,024h,025h,0e6h
        dcb     024h,024h,034h,024h,004h,014h,00ch,000h
        dcb     080h,040h,020h,01fh,020h,040h,040h,07fh
        dcb     042h,042h,043h,042h,040h,060h,020h,000h
hz03:   dcb     080h,040h,020h,0f8h,007h,004h,0e4h,0a4h
        dcb     0a4h,0bfh,0a4h,0a4h,0f6h,024h,000h,000h
        dcb     000h,000h,000h,0ffh,040h,040h,07fh,04ah
        dcb     04ah,04ah,04ah,04ah,07fh,040h,040h,000h
hz04:   dcb     020h,020h,020h,028h,0a8h,06ch,03bh,028h
        dcb     0a8h,06ah,0ach,028h,020h,030h,020h,000h
        dcb     004h,084h,082h,081h,04ah,04ah,049h,025h
        dcb     024h,012h,010h,009h,002h,006h,002h,000h
hz05:   dcb     010h,092h,054h,030h,0ffh,050h,094h,032h
        dcb     0d8h,017h,010h,010h,0f0h,018h,010h,000h
        dcb     002h,082h,04eh,033h,022h,052h,08eh,040h
        dcb     023h,014h,008h,016h,061h,0c0h,040h,000h
hz06:   dcb     084h,084h,044h,0e4h,054h,04ch,044h,07fh
        dcb     044h,04ch,054h,0e4h,044h,0c6h,044h,000h
        dcb     040h,040h,040h,05fh,052h,052h,052h,052h
        dcb     052h,052h,052h,05fh,040h,060h,040h,000h
hz07:   dcb     040h,042h,044h,0c0h,020h,018h,007h,0e4h
        dcb     024h,024h,024h,0e4h,004h,0feh,004h,000h
        dcb     000h,000h,000h,07fh,020h,010h,008h,01fh
        dcb     009h,009h,009h,05fh,080h,07fh,000h,000h
hz08:   dcb     040h,020h,0f8h,007h,0f0h,0a0h,090h,04fh
        dcb     054h,024h,0d4h,04ch,084h,080h,080h,000h
        dcb     000h,000h,0ffh,000h,00fh,080h,092h,052h
        dcb     049h,025h,024h,012h,008h,000h,000h,000h
hz09:   dcb     004h,0c4h,044h,044h,044h,0feh,044h,020h
        dcb     0dfh,010h,010h,010h,0f0h,018h,010h,000h
        dcb     000h,07fh,020h,020h,010h,090h,090h,040h
        dcb     021h,016h,008h,016h,061h,0c0h,040h,000h
hz0a:   dcb     000h,0ffh,002h,012h,092h,092h,092h,0feh
        dcb     092h,092h,0dah,092h,002h,0ffh,002h,000h
        dcb     000h,0ffh,040h,040h,05fh,048h,048h,048h
        dcb     048h,048h,05fh,040h,040h,0ffh,000h,000h
hz0b:   dcb     080h,040h,020h,0f8h,007h,000h,000h,000h
        dcb     0ffh,040h,020h,010h,018h,000h,000h,000h
        dcb     000h,000h,000h,0ffh,000h,004h,002h,001h
        dcb     03fh,040h,040h,040h,040h,040h,070h,000h
hz0c:   dcb     000h,0f8h,048h,048h,048h,048h,0ffh,048h
        dcb     048h,048h,048h,0fch,008h,000h,000h,000h
        dcb     000h,007h,002h,002h,002h,002h,03fh,042h
        dcb     042h,042h,042h,047h,040h,070h,000h,000h
hz0d:   dcb     020h,020h,022h,022h,022h,0e2h,022h,022h
        dcb     022h,0e2h,022h,023h,022h,030h,020h,000h
        dcb     080h,080h,040h,020h,018h,007h,000h,000h
        dcb     000h,03fh,040h,040h,040h,040h,070h,000h
hz0e:   dcb     000h,000h,0fch,040h,040h,040h,040h,0ffh
        dcb     040h,040h,040h,040h,0fch,000h,000h,000h
        dcb     000h,0feh,040h,040h,040h,040h,040h,07fh
        dcb     040h,040h,040h,040h,040h,0feh,000h,000h
hz0f:   dcb     080h,080h,040h,020h,050h,048h,044h,043h
        dcb     044h,048h,050h,020h,040h,0c0h,040h,000h
        dcb     000h,000h,000h,0feh,042h,042h,042h,042h
        dcb     042h,042h,042h,0ffh,002h,000h,000h,000h
hz10:   dcb     000h,080h,040h,020h,098h,086h,080h,080h
        dcb     083h,08ch,090h,020h,0c0h,080h,080h,000h
        dcb     001h,000h,080h,040h,020h,01fh,000h,040h
        dcb     080h,040h,03fh,000h,000h,000h,000h,000h
hz11:   dcb     000h,000h,000h,000h,080h,0c0h,0c0h,080h
        dcb     000h,000h,000h,000h,000h,000h,000h,000h
        dcb     000h,000h,000h,000h,031h,07bh,07bh,031h
        dcb     000h,000h,000h,000h,000h,000h,000h,000h
hz12:   dcb     000h,000h,000h,000h,000h,000h,000h,000h
        dcb     000h,000h,000h,000h,000h,000h,000h,000h
        dcb     000h,000h,000h,000h,000h,000h,000h,000h
        dcb     000h,000h,000h,000h,000h,000h,000h,000h
hz13:   dcb     000h,000h,000h,000h,000h,000h,000h,004h
        dcb     0fch,004h,000h,000h,000h,000h,000h,000h
        dcb     000h,000h,000h,000h,000h,000h,000h,020h
        dcb     03fh,020h,000h,000h,000h,000h,000h,000h
hz14:   dcb     000h,000h,000h,000h,000h,004h,0fch,004h
        dcb     000h,004h,0fch,004h,000h,000h,000h,000h
        dcb     000h,000h,000h,000h,000h,020h,03fh,020h
        dcb     000h,020h,03fh,020h,000h,000h,000h,000h
hz15:   dcb     000h,040h,020h,01eh,010h,010h,010h,0ffh
        dcb     010h,010h,010h,018h,010h,0

⌨️ 快捷键说明

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