(SPRU430e, pg. 6-226)
I see that the MOVZ instruction clears the top 10 bits of the DP register while the MOVW does not.
(SPRU430e, pg. 2-10)
I also see that Data Page pointer is a 22 bit pointer with the range 0x0-0x3FFFFF (4 Meg). The DP itself is really just the upper 16 bits. The lower 6 bits are utilized as an offset to access the 64 words in that page.
So, as I interpret it, the MOVZ and MOVW instructions load the upper 16 bits of the 22 bit value, that is the upper 16 ARE THE DP. I am curious though why MOVZ instruction clears the upper bits (15:10). This leaves the lower 10 programmed with a value. This is basically a 1K block of space (0x0-0xFFC0) that can be accessed this way (+64 words) for a total of 0x0-0xFFFF. Looking at the memory map, this seems that it would only be useful accessing all areas up to and including L1 SARAM. This includes Zone 0 & 1. It could not access Zone 2 or higher.
So, if I am correct, is this instruction just a shortcut to get back to lower RAM? Just a shortcut rather than loading in the upper zeros with MOVW? OR, is there another reason for the MOVZ?
Regards,
Jim