ARM实验三基于ARM的汇编编程实验.docVIP

  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文档。上传文档
查看更多
ARM实验三基于ARM的汇编编程实验

实验三 基于ARM的汇编编程实验Memory)监视0的值。 实验内容二: 1.使用STMFD/LDMFD,MUL指令编写一个整数乘方的子程序,然后使用BL指令调用子程序计算X n的值。 2.X n= X*X*X …… *X,其中相乘的X的个数为n个。先将X的值装入R0和R1,使用寄存器R2进行计数,循环n-1次R0=R0*R1,运算结果就保存在R0中。(不考虑溢出问题) 3.注意:若n=0,则运算结果直接赋1;若n=1,则运算结果直接赋X。 四,实验步骤 实验内容一的步骤: 1.启动ADS1.2,使用ARM Executable Image工程模板建立一个工程arm1.mcp。如图5.1所示。 图5.1 新建工程对话框 2.建立汇编源文件arm1.s,编写实验程序,然后添加到工程中。如图5.2所示。 图5.2 新建汇编文件对话框 3.设置工程连接地址RO Base为0RW Base为0设置调试口地址Image entry point为0 图5.3 DebugRel Settings对话框 4.编译连接工程,选择Project|Debug,启动AXD进行软件仿真调试。 5.打开寄存器窗口(Processor Registers),选择Current项监视R0,R1的值。打开存储器观察窗口(Memory),设置观察地址为0显示方式Size为32Bit,监视0址上的值。 6.单步运行程序,这时观察寄存器和0址上的值。运行结果如图5.4~5.8所示。 图5.4 运行结果 图5.5 运行结果 图5.6 运行结果 图5.7 运行结果 图5.8 运行结果 实验内容二的步骤: 1.启动ADS1.2,使用ARM Executable Image工程模板建立一个工程arm2.mcp。 2.建立汇编源文件arm2.s,编写实验程序,然后添加到工程中。 3.设置工程连接地址RO Base为0RW Base为0设置调试口地址Image entry point为0 4.编译连接工程,选择Project|Debug,启动AXD进行软件仿真调试。 5.打开寄存器窗口(Processor Registers),选择Current项监视寄存器R0,R1,R13(SP)和R14(LR)的值。 6.打开存储器观察窗口(Memory),设置观察地址为0x30003EA0,显示方式Size为32Bit,监视从0x30003F00起始的满递减堆栈区。 7.单步运行程序,跟踪程序执行的流程,观察寄存器 图5.9 运行结果 8.调试程序时,更改参数X和n来测试程序,观察是否得到正确的结果。将n的值设为0,然后执行程序。如图5.10所示。 图5.10 运行结果 五,实验总结 本次试验的主要目的是,掌握指令的条件执行和使用LDR/STR指令完成存储器的访问。而且要求是,使用LDR指令读取0的数据,将数据加1,若结果小于10,则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址。 本次实验主要是了解整个实验代码的含义和具体的在pc机上运行时的具体过程,由于汇编语言不是很熟悉,实验过程中困难比较大,整个实验做的比较慢。

文档评论(0)

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

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

1亿VIP精品文档

相关文档