LDP #
请问高手:
LDP #6
SPLK #80h,RAMYU
是直接寻址,它的偏移量在哪?
ldp #6 是你的页地址
而ramyu的地址是你在本页中的偏移量
明白了?
请问以下描述对吗?
由.bss或.usect定义的变量
.bss K_,1 ;
.bss PITC,1 ;
.bss F2M,1 ;
ST0_SAVE .usect \".context\",1 ;
ST1_SAVE .usect \".context\",1 ;
是存储在数据存储器中,对吧?
那么要对上述变量赋值(直接寻址),首先要找到,存储它们的数据页,在如下赋值:
LDP #6
SPLK #0,K_ ;
SPLK #42166,PITC ;
SPLK #37749,F2M ;
那么,怎么才能找到正确的数据页?
如果像下边编写.CMD文件,是不是说.bss定义的第一个变量K_位于BLK_B1的首地址,即300h?
找到300h对应的数据页便可?
MEMORY
{
PAGE 0: /* PROGRAM MEMORY */
VECS: origin=0h, length=0040h /* PROGRAM */
PROG: origin=0044h, length=7FFFh /* 32K On-chip flash memory */
PAGE 1: /* DATA MEMORY */
BLK_B2: origin=60h, length=20h /* Block B2 */
BLK_B0: origin=200h, length=100h /* Block B0, On-chip DARAM if CNF=0 */
BLK_B1: origin=300h , length=100h /* Block B1 */
SARAM_D: origin=0800H , length=0800H /* 2K SARAM in data space */
PERIPH: origin=7000h , length=1000h /* Peripheral register space */
EX2_DM: origin=8000h , length=8000h /* External data RAM */
}
SECTIONS
{
.vectors: {} > VECS PAGE 0 /* INTERRUPT VECTOR TABLE */
.pvecs: {} > PROG PAGE 0
.text: {} > PROG PAGE 0 /* CODE */
.data: {} > PROG PAGE 0 /* INITIALIZATION DATA TABLES */
.bss: {} > BLK_B1 PAGE 1
.context: {} > BLK_B2 PAGE 1
}
你所说的意思是变量在.bss中第几个定义的,那么偏移量就是几,因为.bss中的变量是连续的,是吗?
是的,是在300,最好用ldp #k_>>7
为什么要ldp #k_>>7 ?
谁知道为什么,不这样会怎样?
ldp #k_>>7是把k_的页地址取出来
恍然大明白,谢谢阿