Samsung C8278X ユーザーズマニュアル

ページ / 324
S3C8275X/F8275X/C8278X/F8278X/C8274X/F8274X  
ADDRESS 
SPACES 
 
2-13 
USING THE REGISTER POINTS 
Register pointers RP0 and RP1, mapped to addresses D6H and D7H in set 1, are used to select two movable 
8-byte working register slices in the register file. After a reset, they point to the working register common area: 
RP0 points to addresses C0H–C7H, and RP1 points to addresses C8H–CFH.  
To change a register pointer value, you load a new value to RP0 and/or RP1 using an SRP or LD instruction.  
(see Figures 2-8 and 2-9).  
With working register addressing, you can only access those two 8-bit slices of the register file that are currently 
pointed to by RP0 and RP1. You cannot, however, use the register pointers to select a working register space in 
set 2, C0H–FFH, because these locations can be accessed only using the Indirect Register or Indexed 
addressing modes. 
The selected 16-byte working register block usually consists of two contiguous 8-byte slices. As a general 
programming guideline, it is recommended that RP0 point to the "lower" slice and RP1 point to the "upper" slice 
(see Figure 2-8). In some cases, it may be necessary to define working register areas in different (non-
contiguous) areas of the register file. In Figure 2-9, RP0 points to the "upper" slice and RP1 to the "lower" slice.  
Because a register pointer can point to either of the two 8-byte slices in the working register block, you can 
flexibly define the working register area to support program requirements.  
 
PROGRAMMING TIP — Setting the Register Pointers 
 SRP 
#70H 
RP0 
 
←  70H, RP1  ←  78H 
 SRP1 
#48H 
RP0 
 
←  no change, RP1  ←  48H, 
 SRP0 
#0A0H 
RP0 
 
←  A0H, RP1  ←  no change 
 CLR 
RP0 
RP0 
 
←  00H, RP1  ←  no change 
 LD 
RP1,#0F8H  ; 
RP0 
 
←  no change, RP1  ←  0F8H 
FH (R15)
0H (R0)
16-Byte
Contiguous
Working
Register block
Register File
Contains 32
8-Byte Slices
RP0
RP1
8H
7H
0  0  0  0  1  X  X  X
0  0  0  0  0  X  X  X
8-Byte Slice
8-Byte Slice
 
Figure 2-8. Contiguous 16-Byte Working Register Block