嵌入式导论03.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式导论03

实验一 MDK-ARM入门实验 1. 实验目的 要求熟悉MDK-ARM集成开发环境的安装以及目录结构,学会使用MDK-ARM运行示例程序,掌握在MDK-ARM环境中编辑、创建、运行和调试汇编语言程序的操作过程,最终初步掌握MDK-ARM进行交叉开发的使用方法。 2. 实验内容 安装MDK-ARM程序,了解其目录结构。选择MDK-ARM安装的示例工程进行开发,通过运行示例程序熟悉该软件的主要菜单和操作。编辑2个简单的汇编语言程序,并创建、运行和调试正确。 3. 实验要求 掌握嵌入式系统软件开发工具MDK-ARM的安装与使用,熟悉汇编语言程序的开发过程。 要求上交电子的实验报告,写出具体的实验步骤,和实验结果,并写出实验的心得体会。 * 长乘法指令 UMULL{cond} RdLo, RdHi, Rn, Rm ;无符号数64位长乘法:(RdHi,RdLo) = Rn×Rm SMULL{cond} RdLo, RdHi, Rn, Rm ;有符号数64位长乘法:(RdHi,RdLo) = Rn×Rm UMLAL{cond} RdLo, RdHi, Rn, Rm ;无符号数64位长乘加: (RdHi,RdLo) = (RdHi,RdLo) + Rn×Rm SMLAL{cond} RdLo, RdHi, Rn, Rm ;有符号数64位长乘加: (RdHi,RdLo) = (RdHi,RdLo) + Rn×Rm 跳转调用指令 B{cond} label ;跳转到label BL{cond} label ;跳转并连接到label ;调用label子程序(下条指令地址存入R14) BX{cond} Rm ;跳转到Rm指定的地址 ; 子程序返回一般用“BX LR“指令 BLX{cond} Rm ;调用Rm指定地址的子程序 (下条指令地址存入R14) 分支指令 CBZ Rn, label ;Rn等于0跳转到Label CBNZ Rn, label ;Rn不等于0跳转到Label IT{x{y{z}}} cond ;分支(If-Then)条件指令 ;cond说明IT块中第1条指令执行的条件 ;x、y和z依次说明IT块中第2、3和4条指令执行的条件开关T或E: ;如果是T(Then)表示条件成立执行 ;否则是E(Else)表示条件不成立执行。 其他指令 NOP{cond} ;空操作指令 BKPT #imm ;断点(Breakpoint)指令 ;引起处理器进入调试状态 SVC{cond} #imm ;引起管理员调用SVC ;(Supervisor Call)异常 WFI{cond} ;等待中断Wait For Interrupt ;暂停执行直到非屏蔽中断产生并响应、 ;被PRIMASK屏蔽的中断被挂起(pending)、 ;或者有调试(Debug Entry)请求 【示例1】计算10+9+ … +1 STACK_TOP EQU 0 ; 设置堆栈空间(0x400 = 1KB) AREA |RESET|, CODE ; MDK-ARM要求有一个名为RESET的代码区 DCD STACK_TOP ; 堆栈(MSP)寄存器的初始值 ; Cortex-M3分配主存地址0存放堆栈初值 DCD start ; 复位地址(复位后执行的第一条指令地址) ; Cortex-M3分配主存地址4存放复位地址 ENTRY 【示例1】计算10+9+ … +1(续) start MOV r0,#10 ; 计算10 + 9 + 8 + … + 1 MOV r1,#0 again ADD r1,r1,r0 SUBS r0,r0,#1 BNE again ; 结果在R1 = 55 = 0x37 stop B stop ;工作完成,进入无穷循环 END 【示例2】数组求和 STACK_TOP EQU 0 AREA |RESET|, CODE DCD STACK_TOP DCD start ENTRY start MOV r1, #num ; 传送求和个数给R1 LDR r2, =array ; 获取数组地址给R2 MOV r0, #0 ; 使用R0进行累加求和 【示例2】数组求和(续1) again LDR r3, [r2], #4 ; 取数组元素值给R3,然后R2增量4 ADD r0, r0, r3 ; 求和 SUBS r1, r1, #1 ; 个数减1 BGT again ; 个数大于0,继续求和 LDR r4, =sum STR r0, [r4] ; 求和R0存入结果变量

文档评论(0)

文档精品 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档