最近在学习ARM汇编,在书上看到:DCD用于分配一段字内存单元,一般用来定义数据表格和其它常数。
;实现x=(a+d)-c;
AREA Code1, CODE, READONLY;定义一个代码段
ENTRY
ADR r4,a
LDR r0,[r4]
ADR r4,d;
LDR r1,[r4]
ADR r4,c
LDR r2,[r4]
ADD r4,r0,r1
SUB r2,r4,r2
ADR r4,x
STR r2,[r4]
NOP
a DCD 0x03;定义a的值
d DCD 0x02;定义b的值
c DCD 0x01;定义c的值
x DCD 0x12345678;定义x的值
END
在Keil上运行以上代码后,发现让r2的值无法写入x对应的地址。发现a,d,c,x 的值都存入Flash里面,因为flash是readonly,故无法把最终的数据写入flash.
于是,有以下疑问:
1、DCD用于分配一段字内存单元,DCD会在内存单元里初始化数据吗?
2、这个内存单元地址如何确定?
第一次论坛发帖,望大侠们指教。 |