Windowing And Addressing Modes - Intel 8XC196K Series User Manual

Table of Contents

Advertisement

This listing shows the disassembled code:
2080H
;C814
2082H
;B14814
2085H
;44E4E2E0
2089H
;B21814
208CH
;65020018
2090H
;F0
2091H
;C814
2093H
;B14814
2096H
;44EAE8E6
209AH
;B21814
209DH
;65020018
20A1H
;F0
The C compiler can also take advantage of this feature if the "windows" switch is enabled. For
details, see the MCS 96 microcontroller architecture software products in the Development Tools
Handbook.
4.2.3

Windowing and Addressing Modes

Once windowing is enabled, the windowed locations can be accessed both through the window
using direct (8-bit) addressing and by the usual 16-bit addressing. The lower register file locations
that are covered by the window are always accessible by indirect or indexed operations. To re-
enable direct access to the entire lower register file, clear the WSR. To enable direct access to a
particular location in the lower register file, you can select a smaller window that does not cover
that location.
When windowing is enabled:
a register-direct instruction that uses an address within the lower register file actually
accesses the window in the upper register file;
an indirect, indexed, or zero-register instruction that uses an address within either the lower
register file or the upper register file accesses the actual location in memory.
The following sample code illustrates the difference between register-direct and indexed address-
ing when using windowing.
PUSHA
LDB
WSR, #12H
ADD
40H, 80H
ADD
40H, 80H[0]
ADD
40H, 380H[0]
POPA
| PUSH
WSR
| LDB
WSR,#48H
| ADD
E0H,E2H,E4H
| LDB
WSR,[SP]
| ADD
SP,#02H
| RET
| PUSH
WSR
| LDB
WSR,#48H
| ADD
E6H,E8H,EAH
| LDB
WSR,[SP]
| ADD
SP,#02H
| RET
; pushes the contents of WSR onto the stack
; select window 12H, a 128-byte block
; The next instruction uses register-direct addr
; mem_word(40H)←mem_word(40H) + mem_word(380H)
; The next two instructions use indirect addr
; mem_word(40H)←mem_word(40H) + mem_word(80H +0)
; mem_word(40H)←mem_word(40H) + mem_word(380H +0)
; reloads the previous contents into WSR
MEMORY PARTITIONS
4-23

Advertisement

Table of Contents
loading

Table of Contents