Owner's manual

6-24
Ultra-High-Speed Flash
Microcontroller Users Guide
; THIS LOOP IS PERFORMED R5 TIMES, IN THIS EXAMPLE 64
MOVX A, @DPTR ; READ SOURCE DATA BYTE 2/3 +D
MOV R1, DPL ; SAVE NEW SOURCE POINTER 2/3 +C
MOV R2, DPH ; 2/2
MOV DPL, R3 ; LOAD NEW DESTINATION 2/2
MOV DPH, R4 ; 2/2
# HSM/UHSM CYCLES
MOVX @DPTR, A ; WRITE DATA TO DESTINATION 2/3 +D
INC DPTR ; NEXT DESTINATION ADDRESS 3/2 +C
MOV R3, DPL ; SAVE NEW DESTINATION POINTER 2/2
MOV R4, DPH ; 2/2
MOV DPL, R1 ; GET NEW SOURCE POINTER 2/2
MOV DPH, R2 ; 2/2
INC DPTR ; NEXT SOURCE ADDRESS 3/1
DJNZ R5, MOVE ; FINISHED WITH TABLE? 3/4
PROGRAM 2: 64-BYTE BLOCK MOVE (DUAL DATA POINTER)
; SH and SL are high and low byte source address.
; DH and DL are high and low byte of destination address.
; DPS is the data pointer select. Reset condition DPTR0.
; For cycle counts:
; HSM = High-Speed Microcontroller
; UHSM = ultra-high-speed microcontroller
# HSM/UHSM CYCLES
DPS EQU 86h ; TELL ASSEMBLER ABOUT DPS
MOV R5, #64 ; NUMBER OF BYTES TO MOVE 2/2
MOV DPTR, #DHDL ; LOAD DESTINATION ADDRESS 3/3
INC DPS ; CHANGE ACTIVE DPTR 2/3
MOV DPTR, #SHSL ; LOAD SOURCE ADDRESS 3/3
MOVE:
; THIS LOOP IS PERFORMED R5 TIMES, IN THIS EXAMPLE 64
MOVX A, @DPTR ; READ SOURCE DATA BYTE 2/3 +D
INC DPS ; CHANGE DPTR TO DESTINATION 2/4 +C
MOVX @DPTR, A ; WRITE DATA TO DESTINATION 2/3 +D
INC DPTR ; NEXT DESTINATION ADDRESS 3/2 +C
INC DPS ; CHANGE DATA POINTER TO SOURCE 2/3
INC DPTR ; NEXT SOURCE ADDRESS 3/1
DJNZ R5, MOVE ; FINISHED WITH TABLE? 3/4
PROGRAM 3: 64-BYTE BLOCK MOVE (DUAL DATA POINTER, AID)
; SH and SL are high and low byte source address.
; DH and DL are high and low byte of destination address.
; DPS is the data pointer select. Reset condition DPTR0.
# UHSM CYCLES
DPS EQU 86h ; TELL ASSEMBLER ABOUT DPS
MOV R5, #64 ; NUMBER OF BYTES TO MOVE 2
ORL DPS, #10h ; SET AUTO-INC/DEC (AID) 3
MOV DPTR, #DHDL ; LOAD DESTINATION ADDRESS 3
INC DPS ; CHANGE ACTIVE DPTR 3
MOV DPTR, #SHSL ; LOAD SOURCE ADDRESS 3
MOVE:
Maxim Integrated