Intel Microcontroller User Manual

Page of 471
5-19
MEMORY PARTITIONS
5.3.2.4
Unsupported Locations Windowing Example (8XC196NP Only)
Assume that you wish to access location 1FE7H (the EP_PIN register, a memory-mapped SFR)
with direct addressing through a 128-byte window. This location is in the range of addresses
(1FE0–1FFFH) that cannot be windowed. Although you could set up the window by writing 1FH
to the WSR, reading this location through the window would return FFH (all ones) and writing
to it would not change the contents. However, you could directly address the remaining SFRs in
the range of 1F80–1FDFH.
5.3.2.5
Using the Linker Locator to Set Up a Window
In this example, the linker locator is used to set up a window. The linker locator locates the win-
dow in the upper register file and determines the value to load in the WSR for access to that win-
dow. (Please consult the manual provided with the linker locator for details.) 
*********  mod1  **************
mod1 module main             ;Main module for linker
public function1
extrn  ?WSR                  ;Must declare ?WSR as external
wsr  equ   14h:byte
sp   equ   18h:word
oseg
     var1:   dsw  1           ;Allocate variables in an overlayable segment
     var2:   dsw  1 
     var3:   dsw  1
cseg
function1:
     push  wsr                ;Prolog code for wsr
     ldb   wsr, #?WSR         ;Prolog code for wsr
     add var1, var2, var3     ;Use the variables as registers
     ;
     ;
     ;
     ldb  wsr, [sp]           ;Epilog code for wsr
     add sp, #2               ;Epilog code for wsr
     ret
end
********  mod2  **************