ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:130.28KB ,
资源ID:5098200      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5098200.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ARM作业.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ARM作业.docx

1、ARM作业 ARM实验 专业年级: 10级通信工程 学号: 100103011119 姓名: 苏锦 指导教师: 郑汉麟 2013年6月8日华中科技大学文华学院信息学部 一编译前工作:1. 先新建新空间2. 新建程序窗口new file,程序写完后,将文件保存为XX.S文件,然后点击源文件菜单,增加XX.S文件,将.S文件打开。3. 编译:Project-settings对Processor设置:Cpu-arm7Endian-默认 little EndianBuild tools-gun tools for ARM对Remote设置:做软件程序时,Remote device -simARM7(软

2、件仿真器)Category: Target specific optionsInstructions sets-ARM interworking4. 将程序编译。5. 编译成功后,对debug设置设置debug:category-generalSymbol file打开XX.S文件中的debug文件中编译生成的XX.elf文件打开。category-DownloadSymbol file打开XX.S文件中的debug文件中编译生成的XX.elf文件打开。Execute program from - Download addresssDownload address : 0x10006. 设置成

3、功后 debug- remote connect,然后debug- download7. Viewdebug -manger(存储器)address 改成0x00001000 -register(寄存器)8. 按F11执行语句-往下跳一行9. 要修改指令,先断开链接debug- disconnect二,软件编程 1 .编写程序将R2的高8位传送到R3的低8位(不考虑R3的其他位)。程序:.global _start.text_start: LDR r2,=0x11111111 R2赋值0x11111111 LDR r3,=0x33333333 R3赋值0x33333333 AND r2,r2,

4、#0xff000000 保留R2的高8位,屏蔽低24位 AND r3,r3,#0xffffff00 保留R3的高24位,屏蔽低8位 MOV r3,r2,lsr#24 将R2的高8位传送到R3的低8位stop: b stop.end1.Debugremote connect 然后download结果:2.F11跟踪调试过程值: 将R2赋值为0x11111111,R3赋值为0x33333333 取R2的高八位,消去R3的低八位将R2的高八位传送到R3的低8位,R3的其他位清零最终结果:3.#用mov r3,r2,lsr#24将R2的高8位传送到R3的低8位没有考虑R3的其他位。还可以用orr r3

5、,r3,r2,lsr #24 将R2的高8位传送到R3的低8位,没有改变R3的其他位。结果分析:将R2赋值0x11111111然后和0xff000000相与取R2的低八位后为0x11000000,将R3赋值为0x33333333,然后和0xffffff00相与,得到0x333333300,再将将R2的高8位传送到R3的低8位,R3其他位清零。 2 .编写实现64位的加法运算,要求R1:R0-R3:R2,结果放回R1:R0中。程序:.global _start.text_start: ldr r0,=0x00003333 R0作为低32位赋值 ldr r1,=0x44440000 R1作为高32

6、位赋值 ldr r2,=0x00001111 R2作为低32位赋值 ldr r3,=0x22220000 R3作为高32位赋值 subs r0,r0,r2 R0与R2两个低32位相减 sbc r1,r1,r3 R1与R3两个高32位相减并减去借位位stop: b stop.end1.Debugremote connect 然后download结果:2.F11跟踪调试过程值: R0,R1,R2,R3分别赋值 R0减去R2,结果0x00002222放在R0;R1减去R再减去借位位3结果0x22220000放在R1最终结果:结果分析:R0,R1,R2,R3分别赋值为0x00003333,0x4444

7、0000,0x00001111,0x22220000。R0-R2低四位相减结果存入R0,R0为0x00002222,R1-R3高位相减再减去借位位0结果存入R1,R1为0x22220000,得到R1:R0。 3 .编程实现除法运算(不是移位指令),并保留商(若不能整除,则要求保留余数).程序代码:.global _start.text_start: mov r0,#25 R0为被除数,此时设为25 mov r1,#4 R1为除数,此时设为4 mov r2,#0 R2为商loop: mul r3,r1,r2 将r1和r2相乘结果放在r3 add r2,r2,#1 r2加1放在r2 sub r4,

8、r0,r3 R4为余数 cmp r4,r1 余数r4和除数r1比较 bhi loop 不相等循环 bleq A sub r2,r2,#1 消除无法消除时的商多1的问题stop: b stopA: 消除整除时的余数 mov r4,#0 b stop .end 1.Debugremote connect 然后download结果:2.F11跟踪调试过程值: 将除数和被除数存进去将商初始赋值为0,将商r2和除数r1相乘放入r3,用被除数减去r3得到的就是余数,和除数r1比较商为0时: 商为3时: 要是两者不相等,则跳转到loop语句循环,直到余数哥除数相等,则再将商减去1排除无法消除时的商多1的问题

9、,得到最终结果余数为1。最终结果:结果分析:首先给商赋初值为0,将商和除数相乘得到R3,用被除数减去R3,得到余数,将余数和除数比较,不相等则跳转到A,循环下去,直到余数和商相等结束循环,再排除无法消除时的商多1的情况,得到商,保留余数。 4.串拷贝(R0指向源数据的首地址,R1指向目的数据串的首地址)程序代码:.global.equ num,8 定义num=8_start: LDR R0,=srcstr 指向源数据R0 LDR R1,=dststr 指向目的数据R1 mov r3,#num R3=8 mov lr,pc 返回 B Astop:b stopA: LDRB R2,R0,#1 加载

10、无符号字节数据 STRB R2,R1,#1 存储无符号字节数据 SUBS r3,r3,#1 R3减去1,结果送入R3 cmp R3,#0 将R3的内容与0相比较看是否相等 bne A 不相等则跳转到A mov PC,LR 返回.datasrcstr:.long 1,2,3,4,5,6,7,0 定义源数据串srcstrdststr:.long 2,4,8,2,6,4,5,0 定义目的数据串dststr.end1.Debugremote connect 然后download结果:2.F11跟踪调试过程值: R0指向源数据 ,R1指向目的数据,设置num为8 将源数据存入1,将数据加载到R2,将目的

11、数据存入1存储到R2,然后将num减去1然后放在R3,再将R3和0比较,如果不想等则跳转到循环标致A循环。循环一次结果:循环8次直到num为0 最后结果:结果分析:先取R0指向源数据的首地址,R1指向目的数据串的首地址,每次循环将R0加载1,R1存储1,直到num为0时结束循环。三过程中遇到的问题 在做ARM软件编译的时候遇到了一些问题,在将程序编译好后,在下载的时候出现问题,检查一遍后发现在SETTING-DEBUG中category-general时,没有将Symbol file中选中编译后的文件,导致下载失败。还有的就是有些指令不是很会用,有的时候会把比如IDR和IDRB混淆,以致用错。

12、在我觉得,很多问题都出现自己Setting的时候,设置的时候,有次将Remote-Remote device -选择EasyIEDarm7,然后下载的时候就出错了,问同学之后才知道应该选择simarm7, EasyIEDarm7是在做硬件实验时候选择的。编写程序的过程中,还是觉得很多指令都不是很会用,字指令和字节指令时最容易弄错的。四心得体会以前学习过汇编编程,ARM给我的感觉就是和汇编很像,但是又比汇编简单很多,有些指令用起来很简单,让很很容易读懂。比如加载字数据IDR比MOV好用很多,在做实验的过程中有些命令不会用也会去问同学来搞懂。将程序下载下来后,我们可以对程序进行单步调试,这样可以很容易就清楚每一步执行之后的结果,还可以通过Memony(寄存器)设置地址来观察每个存储空间存储的内容,我觉得真的很方便。做完这次实验,给我感触最深的是,在实验过程中我们要非常的细心,不然只要有一点点错误,就无法编译成功或下载成功。ARM编程,程序也很易懂的,这样容易我们分析程序。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1