第一范文网 - 专业文章范例文档资料分享平台

山东大学嵌入式实验报告

来源:用户分享 时间:2025/6/2 20:44:36 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

4)汇编语言函数中用到的寄存器如何保护与恢复,为什么要保护参考程序中的R11? 5将delay.s中的R11改成R4,并将两条R11的保护与恢复语句stmfd sp!,{r12}和 ldmfd sp!{r11}删掉,在C语言程序中的语句i----处设置端点,观察运行过程中变量i的变化情况,并解释其中的原因。 程序原代码截图:

Init完成异常矢量表的建立,模式堆栈初始化,并将程序引导至C语言的main函数

C语言程序,调用汇编语言文件delay.s

汇编delay.s延时程序

思考题: 思考题

1) 如何建立异常矢量入口表?

要设置中断类型号,设置中断服务子程序段地址

2)如何在汇编语言中切换至C语言的main函数?

为了保证程序调用时参数的正确传递,汇编程序设计要遵守ATPCS。在C程序中不需要任何关键字来声明将被汇编语言调用的C程序,但需要在汇编语言程序之前使用IMPORT伪操作来声明该C程序。在汇编程序中通过BL指令来调用子程序。 3) 如何在C语言中调用汇编语言函数,并完成参数传递?

为了保证程序调用时参数的正确传递,汇编程序设计要遵守ATPCS。

在汇编程序中需要使用EXPORT伪操作来声明,同时,在C程序中调用该汇编程序之前需

要在C语言程序中使用extern关键词来声明该汇编程序。

4) 汇编语言函数中用到的寄存器如何保护与恢复,为什么要保护参考程序中的R11? 根据ATPCS标准,R11对应ARM 状态局部变量寄存器8。因为R11中可能含有其他重要的数据,所以要保护程序中R11。汇编语言函数中用到的寄存器的保护与恢复需要用到压栈与出栈。

5)将delay.s中的R11改成R4,并将两条R11的保护与恢复语句stmfd sp!,{r12}和 ldmfd sp!{r11}删掉,在C语言程序中的语句i----处设置端点,观察运行过程中变量i的变化情况,并解释其中的原因。 修改后程序如图

由于根据ATPCS标准,R4对应局部变量寄存器1,即i,所以在delay.s中,R4的值减为1,若不进行保护,则返回C程序后经i--,i值变为-1,永远不为0,无法执行if语句。导致i值一直递减下去

搜索更多关于: 山东大学嵌入式实验报告 的文档
山东大学嵌入式实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8jhjo5angs9o8y29wt5t6vudb8bhu400z7q_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top