[作业]嵌入式第2章:微处理器

修改main.s源文件,增加以下内容:

1、在第一行显示“广州大学”字样。

2、编写一个1+2+…+10的程序,将求和结果存入名为”sumresult”的内存单元中,并将求和结果用printf显示出来。

//--------------------------------------------------------------------
//主函数,一般情况下可以认为程序从此开始运行(实际上有启动过程,参见书稿)
main:
//(1)======启动部分(开头)主循环前的初始化工作====================== 
//(1.2)【不变】关总中断
	cpsid i   
 //(1.5)用户外设模块初始化
//  初始化蓝灯, r0、r1、r2是gpio_init的入口参数
	ldr r0,=LIGHT_BLUE     //r0指明端口和引脚(用=,因常量>=256,需用ldr)
	mov r1,#GPIO_OUTPUT    //r1指明引脚方向为输出
	mov r2,#LIGHT_OFF       //r2指明引脚的初始状态为亮
	
	bl  gpio_init          //调用gpio初始化函数
	
 //  初始化串口UART_User1
	mov r0,#UART_User       //串口号
	ldr r1,=UART_BAUD       //波特率
	bl uart_init            //调用uart初始化函数
	
 //(1.6)使能模块中断
    mov r0,#UART_User       //串口号
    bl  uart_enable_re_int  //调用uart中断使能函数
//(1.7)【不变】开总中断
	cpsie  i  
 //(1)======启动部分(结尾)=======================================

bl expFun//branch label跳转至标签分支 expFun实验函数
bl .//branch label跳转至标签分支 当前地址,用于使程序停在当前位置
	
data_format_string://数据类型字符串标识
	.ascii "%s\n\0"
data_format_decimal://数据类型十进制整数标识
	.ascii "%d\n\0"
show_information://待显示的字符串
	.ascii "广州大学\n\0"
	
expFun://实验函数
	push {r0, r1, r2}//r0,r1,r2入栈,在该函数结束后还原为原值
	
	ldr r0, =data_format_string//load register从存储中加载 将 数据类型字符串标识 存入 寄存器r0,规定printf输出格式
	ldr r1, =show_information//load register从存储中加载 将 标签show_infomation位置字符串 的位置值 存入 寄存器r1
	bl printf//branch label跳转至标签分支 串口输出函数,该函数将 r1指向的字符串 输出到串口中
	
	mov r0, #0//move寄存器间移值 从 立即数0 到 r0,r0=0
	mov r1, #0//move寄存器间移值 从 立即数0 到 r1,r1=0
addLoop://累加循环
	add r0, r0, #1//r0=r0+1,r0记录已经加了多少次
	add r1, r1, r0//r1=r1+r0,r1存储累加结果
	cmp r0, #10//compare比较 r0 和 立即数10
	ble addLoop//branch less equal小于等于跳转(Z=1且N!=V),r0<=10即还没加到第10次时继续循环累加
	//r1已经累加10次了就继续向下运行
	ldr r0, =data_format_decimal//
	mov r2, r1//move寄存器间移值,r2=r1
	bl printf//branch label跳转至标签分支 串口输出函数,将 r2存储的数据 输出到串口中
	
	pop {r2, r1, r0}//r2,r1,r0出栈,当前函数结束,将寄存器还原
bx lr//branch exchange切换跳转 到 label register用bl跳转时所处的指令位置寄存器 所指向的位置,回到调用该函数时的初始位置

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值