Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8xC196EA microcontroller user's manual.1998.pdf
Скачиваний:
52
Добавлен:
23.08.2013
Размер:
8.29 Mб
Скачать

MEMORY PARTITIONS

This listing shows the disassembled code:

2080H

;C814

| PUSH

WSR

2082H

;B14814

| LDB

WSR,#48H

2085H

;44E4E2E0

| ADD

E0H,E2H,E4H

2089H

;B21814

| LDB

WSR,[SP]

208CH

;65020018

| ADD

SP,#02H

2090H

;F0

| RET

 

2091H

;C814

| PUSH

WSR

2093H

;B14814

| LDB

WSR,#48H

2096H

;44EAE8E6

| ADD

E6H,E8H,EAH

209AH

;B21814

| LDB

WSR,[SP]

209DH

;65020018

| ADD

SP,#02H

20A1H

;F0

| RET

 

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.3.3Windowing and Addressing Modes

Once windowing is enabled, the windowed locations can be accessed both through the window using direct addressing and through the actual addresses using indirect or indexed 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 bits 6:0 of the WSR and all bits of WSR1. To enable direct access to a particular location in the lower register file, you may select a smaller window that does not cover that location.

When windowing is enabled:

a direct instruction that uses an address within the lower register file actually accesses the window in the upper register file;

an indirect or indexed 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 direct and indexed addressing when using windowing.

PUSHA

;

Pushes the contents

of WSR onto the stack

LDB WSR, #17H

;

Selects window 17H,

a 128-byte block

;(windows 0380-03FFH into 0080-00FFH)

;The next instruction uses direct addr

ADD

40H, 80H

; mem_word(40H)mem_word(40H) + mem_word(380H)

 

 

 

; The next two instructions use

indirect addr

ADD

40H,

80H[0]

; mem_word(40H)mem_word(40H)

+ mem_word(80H +0)

ADD

40H,

380H[0]

;

mem_word(40H)mem_word(40H)

+ mem_word(380H +0)

POPA

 

 

;

reloads the previous contents

into WSR

4-25

Соседние файлы в предмете Электротехника