嵌入式实验报告(共16页).docx
《嵌入式实验报告(共16页).docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告(共16页).docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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 ;定义一个代码段ENT
2、RY ;程序入口 MOV R0,#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
3、;R8 = R8+4 ADD R0,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
4、的值为0 MOV R3,#0;设置R3的值为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或WIN200
5、0或WINXP, ADS1.2. 集成开发环境,仿真器驱动程序。三、实验内容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的值
6、装入堆栈Stop; B stop; 程序结果为: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,#
7、5;设置R8 = 5 MOV R9,#6;设置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 LOO
8、P;R4 9继续执行循环 LDMFD SP!,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实
9、验三 ARM汇编语言程序设计一、实验目的1.了解ARM汇编语言的基本框架,学会使用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 M
10、OV sp,#0x400;堆栈指针sp指向0x400blockcopy; 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-r11
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实验 报告 16
限制150内