资源描述:
《与嵌入式技术实验报告最终版》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ARM与嵌入式技术实验报告专业班级:10通信工程1班姓名:万洁学号:5实验日期:2013年5月28日指导老师:郑汉麟一.实验目的1、通过实验掌握ARM指令的特点和寻址方式;2、掌握简单的ARM汇编语言的程序设计;3、了解集成开发环境EmbestIDE及其开发软件的应用;二、实验环境EmbestIDE应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备的面向嵌入式系统的开发和调试工具。其开发软件EmbestIDEforARM是集编辑器、编译器、调试器、工程管理器(projectmanager)
2、于一体的高度集成的窗口环境,用户可以在EmbestIDE集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应用程序。三、实验步骤1)新建工程:运行EmbestIDE集成开发环境,选择菜单项File→NewWorkspace,如图一,系统弹出一个对话框,键入文件名“wj”,如图二,点击OK按钮。将创建一个新工程,并同时创建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程.。(老师提醒:不要放入Bin文件夹中)图一图二2)建立源文件:点击菜单项File→New,如图三,系统弹出
3、一个新的文本编辑窗,输入源文件代码。编辑完后,保存文件“wj.s”后缀,如图三,四。图三图四3)添加源文件:选择菜单项Project→AddToProject→Files,在工程目录下选择刚才建立的源文件.s后缀文件,如图五,图六,图七。图五图六图七4)基本配置:选择菜单项Project→Settings,弹出工程设置对话框。在工程设置对话框中。①选择Processor设置对话框,按照图八所示,进行配置:图八②选择Remote设置对话框,按照下图九所示,进行配置:图九①选择最右边一个进行编译,显示如图十
4、,则编译成功。图十②选择Project→Settings→Debug设置对话框,按图十一,十二,十三所示,进行配置:图十一图十二图十三①选择最右边一个进行编译,显示如图十四,则编译成功。5)选择菜单项Debug→RemoteConnect进行连接软件仿真器,将存储器地址改为0x1000,如图十五,执行Debug→Download命令下载程序,并打开寄存器窗口。打开memory窗口,按F10进行单步跟踪,观察寄存器的数据变化并分析。按照老师所说的,将源程序的addr0,r0,r1中的add改为adds,并
5、设置R0,R1分别为0xffffff88和0xaa再次观察,得到如下结果:图十五四、实验内容:1.(原题目第二题)编写程序将R2的高8位传送到R3的低8位(不考虑R3的其他位)源程序:.global_start.text_start:movr2,#0x/*把第一个立即数送进r2*/movr3,#0x/*把第二个立即数送进r3*/andr0,r2,#0xff/*取r2高8位到r0*/andr3,r3,#0xffffff00/*r3低8位清零*/orrr3,r3,r0,lsr#24/*r0逻辑右移24位后与
6、r3相或,结果送进r3*/stop:bstop.end调试结果:①Download下载:②取r2高8位到r0:③r3低8位清零:①r0逻辑右移24位后与r3相或,结果送进r3:2.(原题目第三题)编程实现64位的加法运算,要求【R1:R0】+【R3:R2】结果放回【R1:R0】。.global_start.text_start:movR0,#24/*R0=24*/movR1,#12/*R1=12*/movR2,#16/*R2=16*/movR3,#18/*R3=18*/ADDSR0,R0,R2/*R0等
7、于低32位相加,并影响标志位*/ADCR1,R1,R3/*R1等于高32位相加,并加上低位进位*/stop:bstop.end1.Download下载:①单步跟踪后的结果:②存储器的结果显示:③寄存器的结果显示:R0←RO+R2;R1←R1+R3:3.(原题目第七题)编写一段程序计算10!.global_start.text.equnum,10_start:movr0,#nummovr1,r0s1:subsr1,r1,#1/*把r1-1放入r1*/mulr0,r1,r0/*r0*r1放入r0*/cmpr
8、1,#1/*比较R1与1的大小*/beqstopbnes1stop:bstop.end分析调试:①第一次执行S1,r1=10-1=9,10*9=90,换成16进制是5a。②第二次执行S1,r1=9-1=8,10*9*8=720,换成16进制是2d0。③依次执行S1,到r1=1,停止,10*9*8……*1=,换成16进制是375f00。4.(原题目第八题)串拷贝(R0指向源数据的首地址,R1指向目的数据串的首地址).global_start.