第二次嵌入式作业

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内设计循环体完成求和 

最终将结果输出

最后编译并更新串口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值