资源描述:
《arm与嵌入式实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、ARM与嵌入式技术实验报告专业班级:通信工程姓名:****学号:******实验日期:2012年6月7日指导老师:*****欢迎下载该文档一、实验目的1.学习使用EmbestIDE开发环境及ARM软件模拟器;2.掌握简单ARM汇编指令,进一步加强对嵌入式的熟悉和了解。二、实验设备硬件:PC机软件:EmbestIDE开发环境三、实验内容例3:实现64位加法运算,要求【R1:R0】+【R3:R2】,结果放回【R1:R0】中;例2:编写程序将R2的高8位传送到R3的低8位(不考虑R3的其它位);例7:编写一段程序计算10!;例8:串拷贝(R1指向源数据串的首地址,R0指向目的数据串的首
2、地址)。四、实验步骤1)新建工程:运行EmbestIDE集成开发环境,选择菜单项File→NewWorkspace,如图一,系统弹出一个对话框,键入文件名“沈”,如图二,点击OK按钮。将创建一个新工程,并同时创建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程.。2)建立源文件:点击菜单项File→New,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。编辑完后,保存文件“沈.s”后缀,如图四。欢迎下载该文档3)添加源文件:选择菜单项Project→AddToProject→Files,在工程目录下选择刚才建立的源文件.s后缀文件,如图五,图六。4)基本配置:选
3、择菜单项Project→Settings,弹出工程设置对话框。在工程设置对话框中。①选择Processor设置对话框,按照图七所示,进行配置:图七②选择Remote设置对话框,按照下图八所示,进行配置:图八③选择最右边一个进行编译,显示如图九,则编译成功。图九欢迎下载该文档①选择Project→Settings→Debug设置对话框,按照图十所示,进行配置:图十②选择最右边一个进行编译,显示如图九,则编译成功。5)选择菜单项Debug→RemoteConnect进行连接软件仿真器,将存储器地址改为0x1000,如图十一,执行Debug→Download命令下载程序,并打开寄存器窗
4、口。打开memory窗口,按F10进行单步跟踪,观察寄存器的数据变化并分析。图十一五、各实验的参考程序及运行结果实验一:(例3)实现64位加法运算,要求【R1:R0】+【R3:R2】,结果放回【R1:R0】中;1.程序代码如下:.global_start.text_start:movR0,#11/*R0=11*/movR1,#22/*R1=22*/movR2,#33/*R2=33*/movR3,#44/*R3=44*/ADDSR0,R0,R2/*R0等于低32位相加,并影响标志位*/欢迎下载该文档ADCR1,R1,R3/*R1等于高32位相加,并加上低位进位*/stop:bsto
5、p.end2.分析调试:①download下载:②读入数据:③r0+r2→r0(低32位):④r1+r3→r1(带进位的加法):欢迎下载该文档实验二:(例2)编写程序将R2高8位传送到R3的低8位(不考虑R3的其它位);1.程序代码如下:.global_start_start:ldrr2,=0x23453401ldrr3,=0xabcd1200andr2,r2,#0xff000000/*保留R2的高8位,屏蔽低24位*/andr3,r3,#0xffffff00/*保留R3的高24位,屏蔽低8位*/orrr3,r3,r2,lsr#24/*将R2的高8位传送到R3的低8位*/stop
6、:bstop.end2.分析调试:①download下载:②保留r2的高8位,屏蔽低24位:③保留r3的高24位,屏蔽低8位:欢迎下载该文档④将R2的高8位传送到R3的低8位:实验三:(例7)编写一段程序计算10!1.程序代码如下:.global_start.text.equnum,10_start:movr0,#nummovr1,r0s1:subsr1,r1,#1/*把r1-1放入r1*/mulr0,r1,r0/*r0*r1放入r0*/cmpr1,#1/*比较R1与1的大小*/beqstopbnes1stop:bstop.end2.分析调试:①download下载:欢迎下载该文
7、档②第一次执行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=3628800,换成16进制是375f00。实验四:(例8)串拷贝(R1指向源数据串首地址,R0指向目的数据串的首地址)。1.程序代码如下:.global_start.text.EQUNUM,8_start:LDRR0,=srcstr/*指向源数据串R0*/LDRR1,=