English
Language : 

W77E532 Datasheet, PDF (36/86 Pages) Winbond – 8 BIT MICROCONTROLLER
W77E532/W77E532A
MOVX Instruction
The W77E532A, like the standard 8032, uses the MOVX instruction to access external Data Memory.
This Data Memory includes both off-chip memory as well as memory mapped peripherals. While the
results of the MOVX instruction are the same as in the standard 8032, the operation and the timing of
the strobe signals have been modified in order to give the user much greater flexibility.
The MOVX instruction is of two types, the MOVX @Ri and MOVX @DPTR. In the MOVX @Ri, the
address of the external data comes from two sources. The lower 8-bits of the address are stored in the
Ri register of the selected working register bank. The upper 8-bits of the address come from the port 2
SFR. In the MOVX @DPTR type, the full 16-bit address is supplied by the Data Pointer.
Since the W77E532A has two Data Pointers, DPTR and DPTR1, the user has to select between the
two by setting or clearing the DPS bit. The Data Pointer Select bit (DPS) is the LSB of the DPS SFR,
which exists at location 86h. No other bits in this SFR have any effect, and they are set to 0. When
DPS is 0, then DPTR is selected, and when set to 1, DPTR1 is selected. The user can switch between
DPTR and DPTR1 by toggling the DPS bit. The quickest way to do this is by the INC instruction. The
advantage of having two Data Pointers is most obvious while performing block move operations. The
accompanying code shows how the use of two separate Data Pointers speeds up the execution time
for code performing the same task.
Block Move with single Data Pointer:
; SH and SL are the high and low bytes of Source Address
; DH and DL are the high and low bytes of Destination Address
; CNT is the number of bytes to be moved
Machine cycles of W77E532A
#
MOV R2, #CNT
; Load R2 with the count value
2
MOV R3, #SL
; Save low byte of Source Address in R3
2
MOV R4, #SH
MOV R5, #DL
MOV R6, #DH
; Save high byte of Source address in R4
2
; Save low byte of Destination Address in R5
2
; Save high byte of Destination address in R6
2
LOOP:
MOV DPL, R3
MOV DPH, R4
MOVXA, @DPTR
INC DPTR
MOV R3, DPL
MOV R4, DPH
MOV DPL, R5
MOV DPH, R6
MOVX@DPTR, A
INC DPTR
MOV DPL, R5
MOV DPH, R6
DJNZ R2, LOOP
; Load DPL with low byte of Source address
2
; Load DPH with high byte of Source address
2
; Get byte from Source to Accumulator
2
; Increment Source Address to next byte
2
; Save low byte of Source address in R3
2
; Save high byte of Source Address in R4
2
; Load low byte of Destination Address in DPL
2
; Load high byte of Destination Address in DPH
2
; Write data to destination
2
; Increment Destination Address
2
; Save low byte of new destination address in R5
2
; Save high byte of new destination address in R6 2
; Decrement count and do LOOP again if count <> 0 2
- 36 -
Publication Release Date: June 30, 2009
Revision A10