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