1.打开04-Software/ch02/CH02-1-20220118工程目录,编译下载运行,理解并学习main.s汇编源文件
编译成功,接下来进行串口更新,并一并更新
写出main.s中94~101行语句的C语言描述。
//(2)======主循环部分(开头)=====================================
main_loop: //主循环标签(开头)
//(2.1)主循环次数变量mMainLoopCount+1
ldr r2,=mMainLoopCount //mMainLoopCount的地址加载到寄存器r2中
ldr r1, [r2] //mMainLoopCount的值加载到寄存器r1中
add r1,#1 //r1中的值+1,主循环次数+1
str r1,[r2] //r1中的新值返回到mMainLoopCount的地址中,更新主循环次数
//(2.2)未达到主循环次数设定值,继续循环
ldr r2,=MainLoopNUM //将MainLoopNUM的地址加载到寄存器r2中
cmp r1,r2 //比较r1的新值与MainLoopNUM的值
blO main_loop //未达到,继续循环
//(2.3)达到主循环次数设定值,执行下列语句,进行灯的亮暗处理
对应的c语言逻辑为
#include<stdio.h>
int mMainLoopCount=0; //定义主循环次数变量
const int MainLoopNUM=10;//假定主循环设定值为10
int main(){
while(mMainLoopCount < MainLoopNUM)
mMainLoopCount++; // 主循环次数加1
//执行相关灯的亮暗处理代码
return 0;
}
修改main.s源文件,增加以下内容:
1.在第一行显示“广州大学”字样。
2.编写一个1+2+...+10的程序,将求和结果存入名为“sumresult”的内存单元中,并将求和结果用printf显示出来。
注:建议在源程序中“main_loop: ”语句之前的地方增加,结束时用 ”bl .“ 停住。
printf的格式详见05_UserBoard/printf.h文件。
1.定义信息内容
打印语句
2.先在main外定义求和结果
定义信息内容
然后在main内设计循环体完成求和
最终将结果输出
最后编译并更新串口