- 打卡等级:以坛为家I
- 打卡总天数:312
- 最近打卡:2025-03-11 13:20:13
荣誉版主
- 积分
- 5395
|
发表于 2024-3-17 17:47:24
|
显示全部楼层
这是 C51所带的 标准库函数 存储器拷贝函数 memcpy, 又臭又长 
COPY_DATA_DATA:
MOV A,@R1
INC R1
MOV @R0,A
INC R0
DJNZ R7,COPY_DATA_DATA
SJMP COPY_END1
COPY_DATA_PDATA:
MOV A,@R1
INC R1
MOVX @R0,A
INC R0
DJNZ R7,COPY_DATA_PDATA
SJMP COPY_END1
COPY_DATA_XDATA:
MOV DPL,R0
MOV DPH,R4
COPY_IX_001:MOV A,@R1
INC R1
MOVX @DPTR,A
INC DPTR
DJNZ R7,COPY_IX_001
SJMP COPY_END1
COPY_PDATA_DATA:
MOVX A,@R1
INC R1
MOV @R0,A
INC R0
DJNZ R7,COPY_PDATA_DATA
SJMP COPY_END
COPY_PDATA_PDATA:
MOVX A,@R1
INC R1
MOVX @R0,A
INC R0
DJNZ R7,COPY_PDATA_PDATA
SJMP COPY_END
COPY_PDATA_XDATA:
MOV DPL,R0
MOV DPH,R4
COPY_PX_001:MOVX A,@R1
INC R1
MOVX @DPTR,A
INC DPTR
DJNZ R7,COPY_PX_001
SJMP COPY_END
COPY_XDATA_DATA:
MOV DPL,R1
MOV DPH,R2
COPY_XI_001:MOVX A,@DPTR
INC DPTR
MOV @R0,A
INC R0
DJNZ R7,COPY_XI_001
SJMP COPY_END
COPY_XDATA_PDATA:
MOV DPL,R1
MOV DPH,R2
COPY_XP_001:MOVX A,@DPTR
INC DPTR
MOVX @R0,A
INC R0
DJNZ R7,COPY_XP_001
COPY_END1: SJMP COPY_END
TAB_001: SJMP COPY_PDATA_PDATA
SJMP COPY_END
SJMP COPY_PDATA_DATA
SJMP COPY_PDATA_XDATA
SJMP COPY_CODE_PDATA
SJMP COPY_END
SJMP COPY_CODE_DATA
SJMP COPY_CODE_XDATA
SJMP COPY_DATA_PDATA
SJMP COPY_END
SJMP COPY_DATA_DATA
SJMP COPY_DATA_XDATA
SJMP COPY_XDATA_PDATA
SJMP COPY_END
SJMP COPY_XDATA_DATA
SJMP COPY_XDATA_XDATA
COPY_CODE_XDATA:
MOV DPL,R1
MOV DPH,R2
MOV A,R4
MOV R2,A
COPY_CX_001:CLR A
MOVC A,@A+DPTR
INC DPTR
XCH A,R0
XCH A,DPL
XCH A,R0
XCH A,R4
XCH A,DPH
XCH A,R4
MOVX @DPTR,A
INC DPTR
XCH A,R0
XCH A,DPL
XCH A,R0
XCH A,R4
XCH A,DPH
XCH A,R4
DJNZ R7,COPY_CX_001
DJNZ R6,COPY_CX_001
SJMP COPY_END2
COPY_CODE_DATA:
MOV DPL,R1
MOV DPH,R2
COPY_CI_001:CLR A
MOVC A,@A+DPTR
INC DPTR
MOV @R0,A
INC R0
DJNZ R7,COPY_CI_001
COPY_END: MOV A,R4
MOV R2,A
COPY_END2: MOV R1,B
MOV A,R5
MOV R3,A
RET
COPY_XDATA_XDATA:
MOV DPL,R1
MOV DPH,R2
MOV A,R4
MOV R2,A
COPY_XX_001:MOVX A,@DPTR
INC DPTR
XCH A,R0
XCH A,DPL
XCH A,R0
XCH A,R4
XCH A,DPH
XCH A,R4
MOVX @DPTR,A
INC DPTR
XCH A,R0
XCH A,DPL
XCH A,R0
XCH A,R4
XCH A,DPH
XCH A,R4
DJNZ R7,COPY_XX_001
DJNZ R6,COPY_XX_001
SJMP COPY_END2
COPY_CODE_PDATA:
MOV DPL,R1
MOV DPH,R2
COPY_CP_001:CLR A
MOVC A,@A+DPTR
INC DPTR
MOVX @R0,A
INC R0
DJNZ R7,COPY_CP_001
SJMP COPY_END
?C?COPY:
MOV B,R0
MOV A,R7
JZ $+3
INC R6
ORL A,R6
JZ COPY_END
// MOV B,R0
MOV A,R5
ADD A,#0x02
CJNE A,#0x04,$+3
JNC COPY_END
MOV DPL,A
MOV A,R3
ADD A,#0x02
CJNE A,#0x04,$+3
JNC COPY_END
RL A
RL A
ORL A,DPL
RL A
MOV DPTR,#TAB_001
JMP @A+DPTR
|
|