嵌入式实验报告文档格式.docx

上传人:b****8 文档编号:22713720 上传时间:2023-02-05 格式:DOCX 页数:20 大小:739.93KB
下载 相关 举报
嵌入式实验报告文档格式.docx_第1页
第1页 / 共20页
嵌入式实验报告文档格式.docx_第2页
第2页 / 共20页
嵌入式实验报告文档格式.docx_第3页
第3页 / 共20页
嵌入式实验报告文档格式.docx_第4页
第4页 / 共20页
嵌入式实验报告文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

嵌入式实验报告文档格式.docx

《嵌入式实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

嵌入式实验报告文档格式.docx

MULR9,R4,R6;

R9=R4*R6

ADDR2,R2,R9;

R2=R2+R9

ADDR8,R8,#4;

R8=R8+4

ADDR0,R0,#1;

R0=R0+1

CMPR0,R1;

比拟R0和R1的值

BLTLOOP;

R0<

R1的话执行循环

NDCD0X03;

CDCD0X01,0X02,0X03,0X04,0X05,0X06;

XDCD0X01,0X02,0X03,0X04,0X05,0X06;

END

程序结果:

各个存放器的结果

执行结果如下:

3.实现1+2+3+4+·

·

+100,求的值,并保存在地址0x90018的地址里面

MOVR0,#100;

设置R0存放器的值为100

LDRR2,=0X90018;

设置R2存放器指向地址0x90018

MOVR1,#0;

设置R1的值为0

MOVR3,#0;

设置R3的值为0

ADDR3,R3,R0;

R3=R3+R0

SUBR0,R0,#1;

R0=R0-1

将R0和R1的值比拟

BNELOOP;

不相等的话继续执行循环

STRR3,[R2];

将R3的值装入到R2指向的地址块中。

程序执行结果:

程序执行完在0x90018存入的数据是0x13ba即5050

 

实验二ARM汇编语言程序设计

1.了解ARM汇编语言的根本框架,学会使用ARM的汇编语言编程;

2.掌握ARM汇编指令中的堆栈指令的操作,以与存储器的装载指令操作。

1.PC操作系统WIN98或WIN2000或WINXP,ADS1.2.集成开发环境,仿真器驱动程序。

1.理解以下程序,新建工程,参加下面的程序,并观察实验结果

xEQU15;

定义常量x=15

yEQU61;

定义常量y=61

stack_topEQU0X1000;

定义堆栈栈顶地址为0x1000

ENTRY;

程序入口处

MOVsp,#stack_top;

将堆栈指针指向栈顶

MOVr0,#x;

将x的值放入r0

STRr0,[sp];

将r0的值压入堆栈

MOVr0,#y;

将y的值放入r0

LDRr1,[sp];

将x的值放入r1

ADDr0,r0,r1;

r0=r0+r1

将r0的值装入堆栈

Stop;

Bstop;

程序结果为:

r1=x+y=0x6D

2.编写程序循环R4~R11进展累加8次赋值,R4~R11初始值是1~8,每次操作后把R4~R11的容放到SP栈中,SP初始设置为0x800,最后把R4~R11用LDMFD指令清空为0

程序代码如下:

XEQU1;

定义常量x=1

stack_topEQU0X800;

定义栈顶地址

MOVSP,#stack_top;

将栈顶地址指向0x800

MOVR4,#1;

设置R4=1

MOVR5,#2;

设置R5=2

MOVR6,#3;

设置R6=3

MOVR7,#4;

设置R7=4

MOVR8,#5;

设置R8=5

MOVR9,#6;

设置R9=6

MOVR10,#7;

设置R10=7

MOVR11,#8;

设置R11=8

LOOP

ADDR4,R4,#x;

R4累加1

ADDR5,R5,#x;

R5累加1

ADDR6,R6,#x;

R6累加1

ADDR7,R7,#x;

R7累加1

ADDR8,R8,#x;

R8累加1

ADDR9,R9,#x;

R9累加1

ADDR10,R10,#x;

R10累加1

ADDR11,R11,#x;

R11累加1

STMIASP!

{R4-R11};

将R4-R11的值压入堆栈

CMPR4,#9;

比拟R4和9的大小

R4<

9继续执行循环

LDMFDSP!

将R4-R11清零

END;

实验结果:

主要实现将数据2-9,3-10,4-11……9-16压入堆栈〔初始地址是0x800处开始〕,最后将R4-R11全部清零。

3.更改实验中1中的X,Y的值,观察期结果

xEQU20

yEQU120

stack_topEQU0X1000

ENTRY

MOVsp,#stack_top

MOVr0,#x

STRr0,[sp]

MOVr0,#y

LDRr1,[sp]

ADDr0,r0,r1

Stop

BStop

r0=x+y=140=0X8C

实验三ARM汇编语言程序设计

一、实验目的

1.了解ARM汇编语言的根本框架,学会使用ARM的汇编语言编程

2.掌握ARM汇编的存储器加载/存储指令,与if条件、循环、循环与循环的汇编实现

1.PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真器驱动程序

1.理解以下程序,新建工程,参加下面的程序,并观察实验结果

NumEQU20;

定义常量Num=20

START;

LDRr0,=src;

将src数据块的开始地址存入r0中

LDRr1,=dst;

将dst数据块的开始地址存入r1中

MOVr2,#Num;

设置r2的值为20

MOVsp,#0x400;

堆栈指针sp指向0x400

blockcopy;

MOVSr3,r2,LSR#3;

将r2左移3位移入r3并且影响标志位

BEQcopywords;

结果为0的话跳转到copywords

STMFDSP!

{r4-r11};

将r4-r11的值入栈

octcopy;

LDMIAr0!

将src的前8个字数据存入让r4-r11

STMIAr1!

将r4-r11中的数据放入dst数据块中

SUBSr3,r3,#1;

r3=r3-1

BNEoctcopy;

结果不为0跳转到octcopy

恢复原来的r4-r11

copywords;

ANDSr2,r2,#7;

r2=r2&

7

BEQstop;

结果为0跳转到stop

wordcopy;

LDRr3,[r0],#4;

将r0指向的字数据放入r3中,r0=r0+4

STRr3,[r1],#4;

将r3中的数据存入到dst数据块中,r1=r1+4

SUBSr2,r2,#1;

r2=r2-1

BNEwordcopy;

不为0跳转到wordcopy处

stop;

srcDCD1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4;

dstDCD0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

END;

将src的数据全部存入到dst中

2.新建工程,并自行编写程序,分别使用LDR,STR,LDMIA,STMIA操作,实现对某段连续存储单元写入数据,并观察结果

设置r4=1;

设置r5=1;

LDRR0,=dst;

R0保存dst的首地址

STRR4,[R0];

将r4的值装入r0执行的存中

STRR5,[R0,#4];

将r5的值装入r0+4执行的存中

STRR6,[R0,#8];

将r6的值装入r0+8执行的存中

LDRR7,=src;

R0保存src的首地址

LDMIAR7,{R8-R10};

将r7执行的地址的数据读入r8=r10

LDRR3,=N;

r3保存N的首地址

STMIAR3!

{R8-R10};

将r8-r10装入r3指向的存

NDCD0,0,0

srcDCD1,2,3

dstDCD0,0,0

熟悉使用LDMIA,STMIA和LDR,STR指令

3.使用ARM汇编指令实现if条件执行,使用ARM汇编指令实现for条件执行,

使用ARM汇编指令实现while条件执行,使用ARM汇编指令实现do…while条件执行。

实现if条件:

MOVR0,#1

MOVR1,#2

CMPR0,R1

BGTLOOP1

BLTLOOP2

LOOP1

MOVR3,R0

LOOP2

MOVR3,R1

实现for和while条件:

MOVR1,#1

MOVR3,#0

MOVR2,#101;

ADDR3,R1,R3

ADDR1,R1,#1

CMPR1,R2

BLTLOOP

END

实现do…while条件:

MOVR1,#100

BGTSTOP

ADDR3,R0,R3

ADDR0,R0,#1

BLOOP

STOP

实验四基于ARM的C语言程序设计

1.了解ARMC语言的根本框架,学会使用ARM的C语言编程。

2.掌握C语言和汇编语言编程的相互调用。

1.EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真器电缆。

三、ARMC语言简介与使用规那么

1.ARM使用C语言编程是大势所趋

在应用系统的程序设计中,假设所有的编程任务均由汇编语言来完成,其工作量巨大,并且不宜移植。

由于ARM的程序执行速度较高,存储器的存储速度和存储量也很高,因此,C语言的特点充分发挥,使得应用程序的开发时间大为缩短,代码的移植十分方便,程序的重复使用率提高,程序架构清晰易懂,管理较为容易等等。

因此,C语言的在ARM编程中具有重要地位。

2.ARMC语言程序的根本规那么

在ARM程序的开发中,需要大量读写硬件存放器,并且尽量缩短程序的执行时间的代码一般使用汇编语言来编写,比如ARM的启动代码,ARM的操作系统的移植代码等,除此之外,绝大多数代码可以使用C语言来完成。

C语言使用的是标准的C语言,ARM的开发环境实际上就是嵌入了一个C语言的集成开发环境,只不过这个开发环境和ARM的硬件严密相关。

在使用C语言时,要用到和汇编语言的混合编程。

当汇编代码较为简洁,那么可使用直接嵌汇编的方法,否那么,使用将汇编文件以文件的形式参加项目当中,通过ATPCS的规定与C程序相互调用与访问。

ATPCS,就是ARM、Thumb的过程调用标准〔ARM/ThumbProcedureCallStandard〕,它规定了一些子程序间调用的根本规那么。

如存放器的使用规那么,堆栈的使用规那么,参数的传递规那么等。

在C程序和ARM的汇编程序之间相互调用必须遵守ATPCS。

而使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS的规那么。

但是,对于汇编语言来说,完全要依赖用户保证各个子程序遵循ATPCS的规那么。

具体来说,汇编语言的子程序应满足下面3个条件:

●在子程序编写时,必须遵守相应的ATPCS规那么;

●堆栈的使用要遵守相应的ATPCS规那么;

●在汇编编译器中使用-atpcs选项。

根本的ATPCS规定,请详见相关技术文档。

汇编程序调用C程序

汇编程序的设置要遵循ATPCS规那么,保证程序调用时参数正确传递。

在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数。

在调用C程序时,要正确设置入口参数,然后使用BL调用。

C程序调用汇编程序

在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。

在C语言中使用extern关键字声明外部函数〔声明要调用的汇编子程序〕。

在C语言的环境开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序,在C环境下读写硬件的存放器,一般是通过宏调用,在每个项目文件的Startup44b0/INC目录下都有一个44b.h的头文件,那里面定义了所有关于44B0的硬件存放器的宏,对宏的读写,就能操作44B0的硬件。

具体的编程规那么同标准C语言。

四、实验容

1、理解以下程序,新建工程,参加下面的程序,并观察实验结果。

/*实现5个数的相加*/

intsum5(inta,intb,intc,intd,inte){

return(a+b+c+d+e);

}

;

汇编语言

IMPORTsum5;

声明调用c函数

CALLSUMS

{LR};

将LR存放器入栈

MOVR0,#1;

r0=1

ADDR1,R0,R0;

r1=2

ADDR2,R1,R0;

r2=3

ADDR3,R1,R2;

r3=5

STRR3,[SP,#-4]!

将r3的值入栈当做第五个参数

ADDR3,R1,R1;

R3=R3+R1=4

BLsum5;

调用sum5

ADDSP,SP,#4;

sp=sp+4

LDMFDSP,{PC}

实现了i+2i+3i+4i+5i的汇编语言调用c语言

2、用汇编语言实现1到100累加的函数,用C言语编写主程序,在主程序中调用所编写的汇编函数

NAMEasmfile

PUBLICsum5

SECTION.intvec:

CODE

(2)

CODE32

sum5

MOVR2,#0

sum6

ADDR2,R1,R2

CMPR1,R0

BLEsum6

MOVPC,LR

#include<

stdio.h>

externvoidsum5(intx);

intmain(void){

constintn=100;

sum5(n);

return(0);

}

总结

本次实验主要是通过对ARM的各种指令进展操作,通过对这些指令的应用,让我们学会了如何使用汇编来进展编程,掌握汇编编程和C语言编程的技巧,并且能够熟练的使用汇编语言,深刻理解ARM的工作。

并且培养了我们写代码的能力以与对代码的阅读能力和修改能力。

为我们在以后的学习和生活中更实用ARM,利用汇编进展编程奠定了一定的根底!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

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

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