📄 p2764.asm
字号:
JNC Q0505
INC DPH
Q0505: MOVX A,@DPTR
MOV 2FH,A
SETB 27H.5
RET
;==========================================================
Q050B:
LCALL Q075E
ACALL QGET_BYTE
MOV R5,A
LCALL Q14BB
ORL P1,#FFH
RET
;==========================================================
Q0518: MOV R0,#20H
MOV DPTR,#04C9H
Q051D: MOVX A,@DPTR
JZ Q0524
INC DPTR
INC DPTR
DJNZ R0,Q051D
Q0524: MOV A,#20H
CLR C
SUBB A,R0
CJNE A,#20H,Q0534
CLR A
MOV DPTR,#04C9H
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
SJMP Q0518
Q0534: JZ Q0538
SETB PSW.5
Q0538: MOV R3,A
ACALL QGET_BYTE
JZ Q058E
MOV R1,A
XRL A,#0DH
JNZ Q0556
ACALL GET_BYTE_TO_R0
XRL A,#0AH
JZ Q058E
CLR PSW.5
MOV A,11H
XRL A,#03H
JZ Q0553
LJMP Q018A
Q0553: LJMP Q00F0
Q0556: ACALL QGET_BYTE
MOV R2,A
MOV C,PSW.5
CLR PSW.5
MOV DPTR,#04C9H
JC Q0569
MOV A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
SJMP Q0518
Q0569: INC DPTR
MOVX A,@DPTR
XRL A,R2
JNZ Q0584
MOV A,DPL
DEC A
JNC Q057E
CLR A
CPL A
MOV DPL,A
MOV A,DPH
DEC A
MOV DPH,A
SJMP Q0580
Q057E: MOV DPL,A
Q0580: MOV A,R1
MOVX @DPTR,A
SJMP Q0518
Q0584: INC DPTR
DJNZ R3,Q0569
MOV A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
SJMP Q0518
Q058E: CLR PSW.5
RET
;=================================================
Q0591: MOV DPTR,#04C9H
MOV R0,#41H
LJMP CLR_RAM
;=================================================
Q0599:
MOV DPTR,#02CFH
ACALL GET_BYTE_TO_R0
CJNE R0,#00H,Q05A3
SJMP Q05D9
Q05A3: ACALL Q05DC
MOV DPTR,#02CFH
;======================================================
Q05A8: CJNE R7,#00H,Q05BD
PUSH ACC
PUSH DPL
PUSH DPH
LCALL Q075E
ORL P1,#FFH
POP DPH
POP DPL
POP ACC
Q05BD: ACALL GET_CHAR_WIDTH
MOV R3,A
MOVX A,@DPTR
MOV R1,A
MOV A,R6
MOV R0,A
INC DPTR
MOV P2,#00H
Q05C8: MOV A,R3
MOV R2,A
MOVX A,@DPTR
Q05CB: LCALL PUT_A_TO_@R0
INC R0
INC R6
DJNZ R7,Q05D4
SJMP Q05D9
Q05D4: DJNZ R2,Q05CB
INC DPTR
DJNZ R1,Q05C8
Q05D9: RET
;=====================================================
Q05DA:
SJMP Q05A8
Q05DC: MOV R1,#00H
CLR C
SUBB A,15H
JZ Q05E8
JC Q05E8
MOV R1,A
MOV R0,15H
Q05E8: MOV A,R0
MOVX @DPTR,A
INC DPTR
Q05EB: ACALL QGET_BYTE
ACALL Q05FB
MOVX @DPTR,A
INC DPTR
DJNZ R0,Q05EB
MOV A,R1
JZ Q05FA
Q05F6: ACALL QGET_BYTE
DJNZ R1,Q05F6
Q05FA: RET
;============================================================
;点阵空间变换
Q05FB: PUSH ACC
MOV A,11H
XRL A,#03H
JZ Q0606 ;40字符行不用变换
CLR C
SJMP Q0607
Q0606: SETB C
Q0607: POP ACC
JC Q061F
PUSH 01H ;<40字符行,高低位须序颠倒
PUSH 02H
MOV R2,#08H
Q0611: RRC A
XCH A,R1
MOV ACC.0,C
RL A
XCH A,R1
DJNZ R2,Q0611
MOV A,R1
RR A
POP 02H
POP 01H
Q061F: RET
;=========================================================
GET_CHAR_WIDTH: JNB 25H.6,Q0627
MOV A,#02H
SJMP Q062E
Q0627: MOV A,1FH
CJNE A,#01H,Q062E
MOV A,1DH
Q062E: RET
;=========================================================
USER_DEF_CHAR: MOV A,1AH
MOV R3,A
ACALL GET_BYTE_TO_R0
MOV DPTR,#03CCH
MOV A,#20H
XRL A,R3
JZ Q065C
MOV A,#20H
CLR C
SUBB A,R3
MOV R1,A
Q0641: MOV R2,#07H
MOVX A,@DPTR
XRL A,R0
JZ Q064E
Q0647: INC DPTR
DJNZ R2,Q0647
DJNZ R1,Q0641
SJMP Q065C
Q064E: INC DPTR
DEC R2
SETB PSW.5 ;有相同
Q0652: ACALL QGET_BYTE
ACALL Q05FB
MOVX @DPTR,A
INC DPTR
DJNZ R2,Q0652
SJMP Q0663
Q065C: MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV R2,#06H
SJMP Q0652
Q0663: MOV A,1AH
MOV C,PSW.5
CLR PSW.5
JC Q0672
DEC A
JNZ Q0670
MOV A,#20H
Q0670: MOV 1AH,A
Q0672: RET
;==============================================
QGET_BYTE: PUSH DPH
PUSH DPL
LCALL SET_P1
SETB 25H.1
SETB RS0
Q067E: LCALL Q150D
MOV DPTR,#060AH
MOV A,DPL
MOV R0,#FFH
XCH A,R0
CLR C
SUBB A,R0
XRL A,R6
JNZ Q0696
MOV A,DPH
LCALL Q128B
XRL A,R7
JZ Q067E
Q0696: MOV A,R3
ANL A,#7FH
MOV DPH,A
MOV A,R2
MOV DPL,A
MOVX A,@DPTR
MOV R0,A
CLR IE.7
;缓冲区长度加一
MOV A,R6
ADD A,#01H
JNC Q06AC
MOV R6,#00H
INC R7
SJMP Q06AD
Q06AC: INC R6
;读地址加一
Q06AD: CJNE R2,#FFH,Q06C3
MOV R2,#00H
INC R3
MOV A,12H
XRL A,R3
JNZ Q06C4
MOV DPTR,#060AH
MOV A,DPH
MOV R3,A
MOV A,DPL
MOV R2,A
SJMP Q06C4
Q06C3: INC R2
Q06C4: CJNE R7,#00H,Q06D0
MOV A,R6
CLR C
SUBB A,#30H
JC Q06D0
LCALL Q11C9
Q06D0: JB LF,Q06D5
SJMP Q06E7
Q06D5: PUSH PSW
JB 25H.2,Q06DE
POP PSW
SJMP Q06E7
Q06DE: POP PSW
JC Q06E9
CLR 25H.2
LCALL Q10D5
Q06E7: SETB IE.7
Q06E9: MOV A,R0
PUSH ACC
CLR 25H.1
POP ACC
CLR RS0
POP DPL
POP DPH
LCALL SET_P1
RET
;=======================================
;从缓冲区读一字节到R0中
GET_BYTE_TO_R0: ACALL QGET_BYTE
MOV R0,A
RET
;=======================================
Q06FE: MOV A,1CH
JZ Q0707
ACALL CHAR_W_H_TO_R2_R1
LCALL Q09BB
Q0707: RET
;=======================================
CHAR_W_H_TO_R2_R1: MOV A,1FH
MOV R1,A
MOV R2,A
CJNE A,#01H,Q0715
MOV A,1DH
MOV R2,A
MOV A,1EH
MOV R1,A
Q0715: JNB 25H.6,Q071A
MOV R2,#02H
Q071A: RET
;========================================
Q071B: MOV A,R0
JZ Q0727
Q071E: PUSH 00H
LCALL Q072B
POP 00H
DJNZ R0,Q071E
Q0727: ORL P1,#FFH
RET
;====================================================
Q072B: MOV A,R6
JZ Q074D
LCALL Q099F
MOV A,R6
INC A
MOV 3CH,A
MOV A,1FH
MOV R1,A
MOV R2,A
CJNE A,#01H,Q0740
MOV A,1EH
MOV R2,A
MOV R1,A
Q0740: MOV A,16H
MOV R3,A
LCALL PRINT_CHAR_LINE
Q0746: LCALL Q150D
LCALL Q06FE
RET
;====================================================
Q074D: MOV A,1FH
MOV R2,A
CJNE A,#01H,Q0755
MOV R2,1EH
Q0755: MOV R5,#08H
LCALL Q14BB
DJNZ R2,Q0755
SJMP Q0746
;=============================================
Q075E: MOV 2EH,#00H
LCALL Q072B
Q0764: MOV A,1BH
MOV R0,A
MOV A,20H
MOV R1,A
MOV A,R0
CLR C
SUBB A,R1
JNZ Q0779
MOV A,3AH
MOV R0,A
LCALL Q071B
CLR A
MOV R1,A
MOV A,1BH
Q0779: MOV R0,A
INC R1
MOV A,R1
MOV 20H,A
JNB 26H.0,Q0787
CLR 26H.0
SETB 24H.5
SJMP Q078E
Q0787: JNB 26H.1,Q078E
CLR 26H.1
CLR 24H.5
Q078E: MOV A,R0
LCALL SET_P1
RET
;==========================================================
;打印多点行,R3保存点行数
;R1保存字符高度倍数
PRINT_CHAR_LINE: SETB P3.3
SETB P3.4
MOV R5,#80H
JNB 24H.5,Q07A3
MOV R5,#01H
JNB 27H.3,Q07A3
MOV R5,#20H
Q07A3: LCALL Q07CB
MOV A,R1
MOV R2,A
MOV A,R5
JNB 24H.5,Q07AF
RL A
SJMP Q07B0
Q07AF: RR A
Q07B0: MOV R5,A
DJNZ R3,Q07A3
ORL P1,#FEH
LCALL Q1208
RET
;========================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -