实验二_ARM汇编语言程序设计.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二_ARM汇编语言程序设计

实验二 ARM汇编语言程序设计 实验目的 1、了解ARM汇编语言程序的结构特点 2、了解ARM汇编语言程序的编写方法 3、掌握用ARM汇编语言设计简单程序 实验仪器设备及软件 ARM实验箱,计算机,ADS程序开发软件 实验原理 1、存储空间的格式 ARM920将存储空间视为从0开始由字节组成的线性集合,字节0-3中保存了第一个字,字节4-7中保存了第二个字,依此类推。字节还可以按小端格式或大端格式排列。ARM实验箱中存储器的配置见附录C。 2、ARM的寄存器 ARM状态下任何时刻都可以看到16个通过寄存器(r0-r15),1或2个状态寄存器(CPSR,SPSR),在特权模式下会切换到具体模下的寄存器组。每个寄存器都是32位的,并且每个通用寄存器都可以作为数据处理的源数据或目标数据寄存器。因此可以编写出更精简的程序。 3、ARM指令的条件执行 状态寄存器中的N,Z,C,V是数据处理指令影响的标志。几乎每条ARM指令可以根据状态位或状态位的逻辑运算有条件执行。条件执行的指令后缀参考教材。 4、桶形移器 ARM的桶形移位器,使ARM指令的中第二个操作数非常录活。利用移位器,一条ARM指令可以完成更多功能。移位操作有: LSL 逻辑左移 LSR 逻辑右移 ASL 算术左移 ASR 算术右移 ROR 循环右移 RRX 带扩展循环右称 实验内容 1、把内存中ramaddr开始的ramword个字清零 (1)用后变址法 ramaddr equ 0ramword equ 64 clrram mov r0,#0 mov r1,#ramword ldr r2,=ramaddr clrram1 str r0,[r2],#4 subs r1,r1,#1 bne clrram1 mov pc,lr LTORG (2)用前变址法 clrrambak mov r0,#0 mov r1,#ramword ldr r2,=ramaddr-4 clrram2 str r0,[r2,#4]! subs r1,r1,#1 bne clrram2 mov pc,lr LTORG 2、把寄存器中,r0-r12的32位无符号32位数进行求和,和的低32位保存在r1中,高32位保存在r0中。 add13b adds r1,r0,r1 mov r0,#0 adc r0,r0,#0 adds r1,r1,r2 adc r0,r0,#0 adds r1,r1,r3 adc r0,r0,#0 。。。。。。 。。。。。。 mov pc,lr 以上程序在主程序完成初始化后调后。打开寄存器,内存窗口等,观察程序执行前后的变化,及执行过程中的一些状态,并记录。 实验步骤 打开超级终端 打开H-JTAG,有哪些信誉好的足球投注网站ARM, 在D:\ARM\arm2中打开asm2.mcp文件进入metrowerks codeWarrior forARM Developer Suite V1.2中,点击Debug开始编译。 编译成功后进入AXD环境中,要先将超级终端进入Vivi环境中,再点击options,并点击configure Target,进行设置。点击Add添加C:\Program Files中点击H-JTAG文件夹中打开H-JTAG.dll。然后点击OK。 在2410INT.S文件中设置断点(位置“;//呼叫主应用程序 b Main ”),然后点击Processor Views,选择Register和Memory两个。单步执行时跳入aa.s文件。在Memory Start address中输入0此时,进行清零 把0始的内存256字节清零。 6.单步执行时,可以清楚的看到Memory中每当执行完 str r0,[r2],就有四个字节(32位)的数据被清理。直到清零256个字节。 7、调试完毕,整理实验箱,并放回原位。 实验程序及调试过程 实验思考题 在子程序调用时,子程序的下一条语句的地址保存在哪里? 2、编写程序计算r0-r12中16位二进制无符号数的和,每个寄存器中保存两个16位二进制无符号数。 答:1、在子程序调用时,子程序的下一条语句的地址保存在r0=0x310001594

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档