云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 山东大学嵌入式实验报告

山东大学嵌入式实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/12/10 16:31:19

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值一直递减下去

搜索更多关于: 山东大学嵌入式实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

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) 如何建立异常矢量入口表? 要设置中断类型号,设置中断服务子程序段地址 <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com