最近在学习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、这个内存单元地址如何确定? 
第一次论坛发帖,望大侠们指教。
  |