作业一:写出main.s中94-101行语句的c语言描述
main.s中94-101行语句如下:
对应的c语言如下:
int *r2 = &mMainLoopCount; //加载mMainLoopCount的地址到r2
*r1 = *mMainLoopCount; //把指向r2的地址加载到r1
r1 += 1; //将r1的值加1
*mMainLoopCount = r1; //将r1的值存回到r2指向的地址
while(r1<mMainLoopNUM) //比较r1和mMainLoopNUM的值,r1比较小时进入循环
{
main_loop();
r1++;
mMainLoopCount = r1;
}
作业二:修改main.s源文件,增加以下内容:
1.在第一行显示“广州大学”字样
2.编写一个1+2+...+10的程序,将求和结果存入名为"sumresult"的内存单元中,并将求和结果用printf显示出来:
所用汇编语言如下:
ldr r1,=sumresult //将求和结果加载到r1
ldr r2,[r1] //将r1的值加载到r2
mov r3,#1 //将1加载到r3
loop: //开始循环
cmp r3,#10 //比较r3的值是否大于10
bgt endloop //当r3的值大于10时跳至endloop函数
add r2,r3 //将r3的值加到r2上
add r3,#1 //r3自增1
b loop //跳回循环开始处
endloop:
str r2,[r1] //将累加后的结果的值从r2存到r1中
ldr r0,=data_sum //将sum的地址加载到r0
ldr r2,=sumresult //将累加后的结果地址加载到r2
ldr r1,[r2] //将累加后的结的值果存到r1中
bl printf //调用printf函数打印结果
b . //程序结束
求和结果存放在sumresult中:
结果展示: