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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

嵌入式实验报告.docx

1、嵌入式实验报告实验一 ARM汇编语言程序设计一、实验目的1.了解IAR Embedded Workbench 集成开发环境2.掌握ARM汇编指令程序的设计与调试二、实验设备1.PC操作系统WIN98或WIN2000或WINXP,ADSI.2集成开发环境,仿真驱动程序三、实验容1.熟悉IAR Embedded Workbench 集成开发环境2.理解以下程序,新建工程,参加下面的程序,并观察实验结果,解释程序实现的功能分析:该程序实现的功能是程序功能:Y = A*B+C*D+E*F程序代码:AREA Examl, CODE,READONLY ;定义一个代码段ENTRY ;程序入口MOV R0,#

2、0;设置R0存放器的值为0 MOV R8,#0;设置R8存放器的值为0 ADR R2,N;将R2存放器的值设为数据域N的地址 LDR R1,R2;将以R2的值为地址的数据读入R1 MOV R2,#0;设置R2的值为0 ADR R3,C; 将R3存放器的值设为数据域C的地址 ADR R5,X; 将R5存放器的值设为数据域X的地址LOOP LDR R4,R3,R8;将R3+R8的数据读入R4 LDR R6,R5,R8;将R5+R8的数据读入R6 MUL R9,R4,R6;R9 = R4*R6 ADD R2,R2,R9;R2 = R2+R9 ADD R8,R8,#4;R8 = R8+4 ADD R0

3、,R0,#1;R0 = R0+1 CMP R0,R1;比拟R0和R1的值 BLT LOOP;R0R1的话执行循环N DCD 0X03;C DCD 0X01,0X02,0X03,0X04,0X05,0X06;X DCD 0X01,0X02,0X03,0X04,0X05,0X06; END程序结果:各个存放器的结果执行结果如下:3.实现1+2+3+4+100,求的值,并保存在地址0x90018的地址里面程序代码: MOV R0,#100;设置R0存放器的值为100 LDR R2,=0X90018;设置R2存放器指向地址0x90018 MOV R1,#0;设置R1的值为0 MOV R3,#0;设置R

4、3的值为0LOOP ADD R3,R3,R0;R3 = R3+R0 SUB R0,R0,#1;R0 = R0-1 CMP R0,R1;将R0和R1的值比拟 BNE LOOP;不相等的话继续执行循环 STR R3,R2;将R3的值装入到R2指向的地址块中。 END程序执行结果:程序执行完在0x90018存入的数据是0x13ba即5050实验二ARM汇编语言程序设计一、实验目的1. 了解ARM汇编语言的根本框架,学会使用ARM的汇编语言编程;2. 掌握ARM汇编指令中的堆栈指令的操作,以与存储器的装载指令操作。二、实验设备1. PC操作系统WIN98或WIN2000或WINXP, ADS1.2.

5、集成开发环境,仿真器驱动程序。三、实验容1.理解以下程序,新建工程,参加下面的程序,并观察实验结果 程序代码:x EQU 15;定义常量x=15y EQU 61;定义常量y=61stack_top EQU 0X1000;定义堆栈栈顶地址为0x1000ENTRY;程序入口处 MOV sp,#stack_top;将堆栈指针指向栈顶 MOV r0,#x;将x的值放入r0 STR r0,sp;将r0的值压入堆栈 MOV r0,#y;将y的值放入r0 LDR r1,sp;将x的值放入r1 ADD r0,r0,r1;r0 = r0+r1 STR r0,sp;将r0的值装入堆栈Stop; B stop; 程

6、序结果为:r1 = x+y = 0x6D2.编写程序循环R4R11进展累加8次赋值,R4R11初始值是18,每次操作后把R4R11的容放到SP栈中,SP初始设置为0x800,最后把R4R11用LDMFD指令清空为0程序代码如下:X EQU 1;定义常量x= 1stack_top EQU 0X800;定义栈顶地址ENTRY; MOV SP,#stack_top;将栈顶地址指向0x800 MOV R4,#1;设置R4 = 1 MOV R5,#2;设置R5 = 2 MOV R6,#3;设置R6 = 3 MOV R7,#4;设置R7 = 4 MOV R8,#5;设置R8 = 5 MOV R9,#6;设

7、置R9 = 6 MOV R10,#7;设置R10 = 7 MOV R11,#8;设置R11 = 8LOOP ADD R4,R4,#x; R4累加1 ADD R5,R5,#x; R5累加1 ADD R6,R6,#x; R6累加1 ADD R7,R7,#x; R7累加1 ADD R8,R8,#x; R8累加1 ADD R9,R9,#x; R9累加1 ADD R10,R10,#x; R10累加1 ADD R11,R11,#x; R11累加1 STMIA SP!,R4-R11;将R4-R11的值压入堆栈 CMP R4,#9;比拟R4和9的大小 BLT LOOP;R4 9继续执行循环 LDMFD SP!

8、,R4-R11;将R4-R11清零 END;实验结果:主要实现将数据2-9,3-10,4-119-16压入堆栈初始地址是0x800处开始,最后将R4-R11全部清零。3.更改实验中1中的X,Y的值,观察期结果程序代码:x EQU 20y EQU 120stack_top EQU 0X1000ENTRY MOV sp,#stack_top MOV r0,#x STR r0,sp MOV r0,#y LDR r1,sp ADD r0,r0,r1 STR r0,spStop B Stop END程序结果为:r0 = x+y = 140 = 0X8C实验三ARM汇编语言程序设计一、 实验目的1.了解A

9、RM汇编语言的根本框架,学会使用ARM的汇编语言编程2.掌握ARM汇编的存储器加载/存储指令,与if条件、循环、循环与循环的汇编实现二、实验设备1.PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真器驱动程序三、实验容1.理解以下程序,新建工程,参加下面的程序,并观察实验结果程序代码:Num EQU 20;定义常量Num= 20START; LDR r0,=src;将src数据块的开始地址存入r0中 LDR r1,=dst; 将dst数据块的开始地址存入r1中 MOV r2,#Num;设置r2的值为20 MOV sp,#0x400;堆栈指针sp指向0x400bl

10、ockcopy; MOVS r3,r2,LSR #3;将r2左移3位移入r3并且影响标志位 BEQ copywords;结果为0的话跳转到copywords STMFD SP!,r4-r11;将r4-r11的值入栈octcopy; LDMIA r0!,r4-r11;将src的前8个字数据存入让r4-r11 STMIA r1!,r4-r11;将r4-r11中的数据放入dst数据块中 SUBS r3,r3,#1;r3 = r3-1 BNE octcopy;结果不为0跳转到octcopy LDMFD SP!,R4-R11;恢复原来的r4-r11copywords; ANDS r2,r2,#7; r2

11、 = r2&7 BEQ stop;结果为0跳转到stopwordcopy; LDR r3,r0,#4;将r0指向的字数据放入r3中,r0 = r0+4 STR r3,r1,#4;将r3中的数据存入到dst数据块中,r1 = r1+4 SUBS r2,r2,#1;r2 = r2 -1 BNE wordcopy;不为0跳转到wordcopy处stop; B stop;src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4;dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;END;程序结果:将src的数据全部存入到

12、dst中2.新建工程,并自行编写程序,分别使用LDR,STR,LDMIA,STMIA操作,实现对某段连续存储单元写入数据,并观察结果程序代码: MOV R4,#1;设置r4 = 1; MOV R5,#2; 设置r5 = 1; MOV R6,#3;设置r4 = 1; LDR R0,=dst;R0保存dst的首地址 STR R4,R0;将r4的值装入r0执行的存中 STR R5,R0,#4; 将r5的值装入r0+4执行的存中 STR R6,R0,#8; 将r6的值装入r0+8执行的存中 LDR R7,=src; R0保存src的首地址 LDMIA R7,R8-R10;将r7执行的地址的数据读入r8

13、=r10LDR R3,=N;r3保存N的首地址 STMIA R3!,R8-R10;将r8-r10装入r3指向的存N DCD 0,0,0src DCD 1,2,3dst DCD 0,0,0 END程序结果:熟悉使用LDMIA,STMIA和LDR,STR指令3.使用ARM汇编指令实现if条件执行,使用ARM汇编指令实现for条件执行,使用ARM汇编指令实现while条件执行,使用ARM汇编指令实现dowhile条件执行。程序代码:实现if条件: MOV R0,#1 MOV R1,#2 CMP R0,R1 BGT LOOP1 BLT LOOP2LOOP1 MOV R3,R0LOOP2 MOV R3,

14、R1 END程序结果:实现for和while条件: MOV R1,#1 MOV R3,#0 MOV R2,#101;LOOP ADD R3,R1,R3 ADD R1,R1,#1 CMP R1,R2 BLT LOOPEND程序结果:实现dowhile条件: MOV R0,#1 MOV R1,#100 MOV R3,#0LOOP CMP R0,R1 BGT STOP ADD R3,R0,R3 ADD R0,R0,#1 B LOOPSTOP END程序结果:实验四 基于ARM的C语言程序设计一、实验目的1.了解ARM C语言的根本框架,学会使用ARM的C语言编程。2. 掌握C语言和汇编语言编程的相互

15、调用。二、实验设备1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真器电缆。三、ARM C语言简介与使用规那么1. ARM使用C语言编程是大势所趋在应用系统的程序设计中,假设所有的编程任务均由汇编语言来完成,其工作量巨大,并且不宜移植。由于ARM的程序执行速度较高,存储器的存储速度和存储量也很高,因此,C语言的特点充分发挥,使得应用程序的开发时间大为缩短,代码的移植十分方便,程序的重复使用率提高,程序架构清晰易懂,管理较为容易等等。因此,C语言的在ARM编程中具有重要地位。2. ARM C语言程序的根本规那么在ARM程序的开发中,需要大量读写硬件存放器,并且尽量缩短程序

16、的执行时间的代码一般使用汇编语言来编写,比如ARM的启动代码,ARM的操作系统的移植代码等,除此之外,绝大多数代码可以使用C语言来完成。C语言使用的是标准的C语言,ARM的开发环境实际上就是嵌入了一个C语言的集成开发环境,只不过这个开发环境和ARM的硬件严密相关。在使用C语言时,要用到和汇编语言的混合编程。当汇编代码较为简洁,那么可使用直接嵌汇编的方法,否那么,使用将汇编文件以文件的形式参加项目当中,通过ATPCS的规定与C程序相互调用与访问。ATPCS,就是ARM、Thumb的过程调用标准ARM/Thumb Procedure Call Standard,它规定了一些子程序间调用的根本规那么

17、。如存放器的使用规那么,堆栈的使用规那么,参数的传递规那么等。在C程序和ARM的汇编程序之间相互调用必须遵守ATPCS。而使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS的规那么。但是,对于汇编语言来说,完全要依赖用户保证各个子程序遵循ATPCS的规那么。具体来说,汇编语言的子程序应满足下面3个条件: 在子程序编写时,必须遵守相应的ATPCS规那么; 堆栈的使用要遵守相应的ATPCS规那么; 在汇编编译器中使用-atpcs选项。根本的ATPCS规定,请详见相关技术文档。汇编程序调用C程序汇编程序的设置要遵循ATPCS规那么,保证程序调用时参数正确传递。在汇编程序中使用IMPO

18、RT伪指令声明将要调用的C程序函数。在调用C程序时,要正确设置入口参数,然后使用BL调用。C程序调用汇编程序汇编程序的设置要遵循ATPCS规那么,保证程序调用时参数正确传递。在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。在C语言中使用extern关键字声明外部函数声明要调用的汇编子程序。在C语言的环境开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序,在C环境下读写硬件的存放器,一般是通过宏调用,在每个项目文件的Startup44b0/INC目录下都有一个44b.h的头文件,那里面定义了所有关于44B0的硬件存放器的

19、宏,对宏的读写,就能操作44B0的硬件。具体的编程规那么同标准C语言。四、实验容 1、理解以下程序,新建工程,参加下面的程序,并观察实验结果。程序代码: /*实现5个数的相加*/int sum5(int a,int b,int c,int d,int e) return (a+b+c+d+e); ;汇编语言 IMPORT sum5;声明调用c函数CALLSUMS STMFD SP!,LR;将LR存放器入栈 MOV R0,#1;r0 = 1 ADD R1,R0,R0;r1 = 2 ADD R2,R1,R0;r2 = 3 ADD R3,R1,R2;r3 = 5 STR R3,SP,#-4!;将r3

20、的值入栈当做第五个参数 ADD R3,R1,R1;R3 = R3+R1=4 BL sum5;调用sum5 ADD SP,SP,#4;sp= sp+4 LDMFD SP,PC程序结果:实现了i+2i+3i+4i+5i的汇编语言调用c语言2、用汇编语言实现1到100累加的函数,用C言语编写主程序,在主程序中调用所编写的汇编函数程序代码:NAME asmfile PUBLIC sum5 SECTION .intvec : CODE (2) CODE32sum5ENTRY MOV R1,#1 MOV R2,#0sum6 ADD R2,R1,R2 ADD R1,R1,#1 CMP R1,R0 BLE sum6 MOV PC,LR END#include extern void sum5(int x);int main(void) const int n = 100; sum5(n); return(0);程序结果:总结本次实验主要是通过对ARM的各种指令进展操作,通过对这些指令的应用,让我们学会了如何使用汇编来进展编程,掌握汇编编程和C语言编程的技巧,并且能够熟练的使用汇编语言,深刻理解ARM的工作。并且培养了我们写代码的能力以与对代码的阅读能力和修改能力。为我们在以后的学习和生活中更实用ARM,利用汇编进展编程奠定了一定的根底!

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

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