📄 fution.asm
字号:
;-----------------------------------------------------------
PUBLIC _RESET_SYSTEM
PUBLIC _SET_DATA_L
PUBLIC _ADDDATA
PUBLIC _MOVEDATA_L
PUBLIC _MOVEDATA_R
PUBLIC _WRITE_OFF
PUBLIC _SWAPDATA
PROC SEGMENT CODE
RSEG PROC
;---------------------------------------------------------------------
_RESET_SYSTEM:
MOV PSW,#0D
MOV IE,#0D
MOV IP,#0D
MOV TMOD,#0D
MOV TCON,#0D
POP ACC
POP ACC
MOV DPTR,#ROVER
PUSH DPL
PUSH DPH
RETI
ROVER: CLR A
PUSH ACC
PUSH ACC
RETI
;---------------------------------------------------------------------
;数据搬家,入口源地址,目的地址,终止地址
;---------------------------------------------------------------------
_ADDDATA: ;MOV R7,#4D ;源地址
;MOV R6,#3D
;MOV R5,#3D ;目的地址
;MOV R4,#3D
;R3 ;终止地址
LOOP_ADD: MOV DPL,R7
MOV DPH,R6
MOVX A,@DPTR ;得到一个数据
INC DPTR
MOV R7,DPL
MOV R6,DPH
MOV DPL,R5
MOV DPH,R4
MOVX @DPTR,A ;写入其他地址
INC DPTR
MOV R5,DPL
MOV R4,DPH
MOV A,R5
XRL A,R3
JNZ LOOP_ADD
MOV A,R4
XRL A,R2
JNZ LOOP_ADD
RET
;---------------------------------------------------------------------
;左移出屏数据装载
;---------------------------------------------------------------------
_MOVEDATA_L: ;MOV R7,#4D ;源地址
;MOV R6,#3D
;MOV R5,#3D ;目的地址
;MOV R4,#3D
;R3 ;终止地址
;R2
;R1
;R0
MOV DPL,R7
MOV DPH,R6
MOV A,R1
PUSH ACC
MOV A,R5
MOV R1,A
LOOP: MOV A,R3
MOV R2,A
LOOP_L:
MOVX A,@DPTR ;得到一个数据
RLC A
MOV P2,R4
MOVX @R1,A ;写入其他地址
PUSH PSW
XCH A,DPL
DEC A
CJNE A,#0FFH,LOOP_DPTR
DEC DPH
LOOP_DPTR: XCH A,DPL
DEC R1
CJNE R1,#0FFH,LOOP_DPTR2
DEC R4
LOOP_DPTR2:
POP PSW
DJNZ R2,LOOP_L
MOV A,R3
ADD A,R3
ADD A,DPL
MOV DPL,A
MOV A,DPH
ADDC A,#0D
MOV DPH,A
MOV A,R3
ADD A,R3
ADD A,R1
MOV R1,A
MOV A,R4
ADDC A,#0D
MOV R4,A
DJNZ R0,LOOP
POP ACC
MOV R1,A
RET
;---------------------------------------------------------------------
;左移出屏数据装载
;---------------------------------------------------------------------
_MOVEDATA_R: ;MOV R7,#4D ;源地址
;MOV R6,#3D
;MOV R5,#3D ;目的地址
;MOV R4,#3D
;MOV R3,#23D ;终止地址
;MOV R2,#2D
MOV DPH,R6
MOV DPL,R7
MOV 00H,05H
PUSH PSW
LOOP_R: POP PSW
MOVX A,@DPTR ;得到一个数据
INC DPTR
RRC A
MOV P2,R4
MOVX @R1,A ;写入其他地址
PUSH PSW
INC R1
CJNE R1,#0D,LOOP_R_NEXT
INC R4
LOOP_R_NEXT: MOV A,R1
XRL A,R3
JNZ LOOP_R
MOV A,R4
XRL A,R2
JNZ LOOP_R
POP PSW
RET
;---------------------------------------------------------------------
;数据搬家,入口源地址,目的地址,终止地址
;---------------------------------------------------------------------
_SET_DATA_L: ;MOV R7,#4D ;源地址
;MOV R6,#3D
;MOV R5,#3D ;目的地址
;MOV R4,#3D
;MOV R3,#23D ;终止地址
;MOV R2,#2D
INC R3
MOV DPH,R6
MOV DPL,R7
MOVX A,@DPTR ;得到一个数据
LOP_L: RLC A
DJNZ R3,LOP_L
JC LOP_H
MOV DPH,R4
MOV DPL,R5
MOVX A,@DPTR ;写入其他地址
ANL A,#0FEH
MOVX @DPTR,A
RET
LOP_H: MOV DPH,R4
MOV DPL,R5
MOVX A,@DPTR ;写入其他地址
ORL A,#01H
MOVX @DPTR,A
RET
;---------------------------------------------------------------------
_WRITE_OFF:
CLR P1.5
CLR P1.6
CLR P1.7
MOV DPTR,#5555H
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#2AAAH
MOV A,#055H
MOVX @DPTR,A
MOV DPTR,#5555H
MOV A,#80H
MOVX @DPTR,A
MOV DPTR,#5555H
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#2AAAH
MOV A,#055H
MOVX @DPTR,A
MOV DPTR,#5555H
MOV A,#20H
MOVX @DPTR,A
RET
;---------------------------------------------------------------------
;数据高低位交换
;---------------------------------------------------------------------
_SWAPDATA: ;MOV R7,#4D ;源地址
;MOV R6,#3D
;MOV R5,#3D ;目的地址
;MOV R4,#3D
;MOV R3,#23D ;终止地址
;MOV R2,#2D
MOV A,R5
ADD A,#1D
MOV R5,A
MOV A,R4
ADDC A,#0D
MOV R4,A
MOV DPH,R6
MOV DPL,R7
LOOP_SWAP: MOVX A,@DPTR ;得到一个数据
MOV R3,#8D
CPL A
MOV R1,A
LOOP_RLC: MOV A,R1
RLC A
MOV R1,A
MOV A,R2
RRC A
MOV R2,A
DJNZ R3,LOOP_RLC
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,DPL
XRL A,R5
JNZ LOOP_SWAP
MOV A,DPH
XRL A,R4
JNZ LOOP_SWAP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -