beautypg.com

2 64-byte block move without dual data pointer, Byte block move with dual data pointer – Maxim Integrated High-Speed Microcontroller User Manual

Page 83

background image

High-Speed Microcontroller User’s Guide

Rev: 062210

83 of 176

6.5.2 64-Byte Block Move Without Dual Data Pointer

; SH and SL are high and low byte source address.
; DH and DL are high and low byte of destination address.

# CYCLES

MOV

R5, #64d

; NUMBER OF BYTES TO MOVE

2

MOV

DPTR, #SHSL

; LOAD SOURCE ADDRESS

3

MOV

R1, #SL

; SAVE LOW BYTE OF SOURCE

2

MOV

R2, #SH

; SAVE HIGH BYTE OF SOURCE

2

MOV

R3, #DL

; SAVE LOW BYTE OF DESTINATION

2

MOV

R4, #DH

; SAVE HIGH BYTE OF DESTINATION

2

MOVE:
; THIS LOOP IS PERFORMED R5 TIMES, IN THIS EXAMPLE 64

MOVX

A, @DPTR

; READ SOURCE DATA BYTE

2

MOV

R1, DPL

; SAVE NEW SOURCE POINTER

2

MOV

R2,

DPH

;

2

MOV

DPL, R3

; LOAD NEW DESTINATION

2

MOV

DPH,

R4

;

2

MOVX

@DPTR, A

; WRITE DATA TO DESTINATION

2

INC

DPTR

; NEXT DESTINATION ADDRESS

3

MOV

R3, DPL

; SAVE NEW DESTINATION POINTER

2

MOV

R4,

DPH

;

2

MOV

DPL, R1

; GET NEW SOURCE POINTER

2

MOV

DPH,

R2

;

2

INC

DPTR

; NEXT SOURCE ADDRESS

3

DJNZ

R5, MOVE

; FINISHED WITH TABLE?

3