实验环境:ADS
IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RW$$Base|
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
IMPORT Main
AREA Start,CODE,READONLY
ENTRY
CODE32
RESET
LDR SP,=0X40003F00
LDR R0,=|Image$$RO$$Limit|
LDR R1,=|Image$$RW$$Base|
LDR R3,=|Image$$ZI$$Base|
CMP R0,R1
BEQ LOOP1
LOOP0
CMP R0,R3
LDRCC R2,[R0],#4
STRCC R2,[R1],#4
BCC LOOP0
LOOP1
LDR R1,=|Image$$ZI$$Limit|
MOV R2,#0
LOOP2
CMP R3,R1
STRCC R2,[R3],#4
BCC LOOP2
B Main
END
AREA Addasm,CODE,READONLY
ENTRY
CODE32
EXPORT Add
Add
ADD R0,R0,R1
MOV PC,LR
END
#define uint8 unsigned char
#define uint32 unsigned int
#define N 100 extern int
Add(int x,int y); void
Main(void)
{
uint32 i,sum=0;
for(i=0;i<N;i++)
{
sum+=Add(sum,i);
}
while(1);
}
该文描述了一个基于ADS的实验环境中,代码从只读存储区加载,到数据初始化的过程,包括RO、RW和ZI段的处理。文章通过汇编语言实现了一个简单的加法器函数Add,并在C语言中调用该函数进行循环计算,展示了程序执行和变量操作的基本步骤。
347

被折叠的 条评论
为什么被折叠?



