湖南工业大学ARM实验报告

合集下载

湖南工业大学单片机实验报告 1认识实验剖析

湖南工业大学单片机实验报告 1认识实验剖析

实验一、认识实验实验一(一):存储器读写一、实验目的1、掌握寄存器、存储器读写等汇编指令;2、掌握编程软件编辑、编译、调试等基本操作;3、学习简单程序的基本调试方法。

二、实验设备PC机、Keil 软件、Proteus软件。

三、实验内容将70H-7FH16个字节单元的数据复制到片外存储器2000H开始的地址单元中,程序清单如下:ORG 0000HSJMP STARTORG 0030HSTART:MOV 70H,#00HMOV 71H,#01HMOV 72H,#02HMOV 73H,#03HMOV 74H,#04HMOV 75H,#05HMOV 76H,#06HMOV 77H,#07HMOV 78H,#08HMOV 79H,#09HMOV 7AH,#0AHMOV 7BH,#0BHMOV 7CH,#0CHMOV 7DH,#0DHMOV 7EH,#0EHMOV 7FH,#0FHMOV R1,#10HMOV R0,#70HMOV DPTR,#2000HLOOP:MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R1,LOOPEND四、上机操作及调试步骤1、启动PC机,打开Keil4软件,如图(1)图(1)2、建立Keil工程文件,如图(2)图(2)3、建立一个exe1工程文件(工程文件名任意取),不需要扩展名。

选择工程存放路径,点击“保存”按钮。

如图(3)图(3)4、选择芯片,51单片机在Atmel下,找到A T89C51,选中点击OK;图(4)5、因为使用汇编语言,下面弹出窗口选否;图(5)6、建立工程如图图(6)7、为工程添加文件,也就是汇编代码,点击新建按钮(或File->new),弹出Text1文本文件。

新建.ASM文件如图图(7)8、另存为到工程文件,点击保存,保存.asm文件图(8)9、保存后如图图(9)10、添加源文件exe1.asm,右键单击Source Group1,选中其中的“Add file to Group”Source Group1”,出现一个对话框,要求寻找源文件,单击exe1.asm文件,然后在点击Add按钮,此时对话框不会消失,在点击close就Ok 了,如图图(10)图(11)11、没有匹配的源文件,不要急,将C Source file(*.c)换成All files(*.*),源文件就出来了图(12)12、最终如图13、接下来就是写汇编代码了14、写好汇编代码,点击下面三个按钮进行编译……,没有错误(0 Error)就编译通过15、生成hex文件,下载到单片机中,使得单片机工作…………设置如下:单击如下按钮,在弹出的对话框中选中output列表项,按图设置,并单击OK保存就行了。

arm中断实验的实验报告

arm中断实验的实验报告

arm中断实验的实验报告ARM中断实验的实验报告引言:ARM中断是一种常用的处理器功能,它可以在特定条件下中断当前的程序执行,转而执行指定的中断服务程序。

本次实验旨在通过ARM中断实验,深入了解中断的原理和应用。

一、实验背景ARM中断是ARM处理器中的一种重要功能,它可以在特定条件下中断当前的程序执行,转而执行指定的中断服务程序。

中断可以分为外部中断和内部中断两种类型。

外部中断是指来自外部设备的中断请求,例如外部设备的输入信号变化;内部中断是指来自处理器内部的中断请求,例如算术溢出、指令错误等。

二、实验目的1. 了解中断的概念和原理;2. 掌握ARM中断的实现方法;3. 学习如何编写中断服务程序。

三、实验步骤1. 准备实验环境:搭建ARM开发板,连接必要的外设;2. 配置中断控制器:根据实验需求,配置中断控制器的相关寄存器,使其能够正确响应中断请求;3. 编写中断服务程序:根据实验需求,编写中断服务程序,实现中断处理的相关功能;4. 运行实验程序:将编写好的程序下载到ARM开发板上,运行程序,观察中断的触发和响应情况;5. 实验结果分析:根据实验结果,分析中断的触发条件、中断服务程序的执行情况等。

四、实验结果与分析通过实验,我们成功实现了ARM中断的功能。

在实验过程中,我们配置了外部设备的中断引脚,当引脚状态发生变化时,中断控制器会产生中断请求,处理器则会立即中断当前的程序执行,转而执行中断服务程序。

在中断服务程序中,我们可以完成一些特定的操作,例如读取外设数据、更新系统状态等。

实验结果表明,中断服务程序能够正确地响应中断请求,并完成相应的操作。

五、实验总结本次实验通过ARM中断的实验,我们深入了解了中断的原理和应用。

中断是一种重要的处理器功能,它可以在特定条件下中断当前的程序执行,转而执行指定的中断服务程序。

掌握了中断的实现方法和编写中断服务程序的技巧,我们可以在实际应用中更好地利用中断功能,提高系统的响应速度和稳定性。

arm中断实验的实验报告

arm中断实验的实验报告

arm中断实验的实验报告
《ARM中断实验的实验报告》
实验目的:
本实验旨在通过ARM中断实验,深入理解ARM处理器的中断机制,并掌握中
断处理的相关知识和技能。

实验内容:
1. 确定实验环境:选择一款ARM处理器,并搭建相应的开发环境。

2. 编写中断处理程序:编写一个简单的中断处理程序,包括中断触发条件、中
断服务程序和中断处理函数。

3. 测试中断程序:在实验环境中模拟中断触发条件,验证中断处理程序的正确
性和可靠性。

4. 分析中断处理过程:通过调试工具和相关技术手段,深入分析中断处理过程,包括中断响应时间、中断服务时间和中断处理流程。

实验结果:
经过实验,我们成功搭建了ARM中断实验环境,并编写了一个简单的中断处理程序。

在测试过程中,中断程序能够正确响应和处理中断请求,表现出良好的
稳定性和可靠性。

通过分析中断处理过程,我们深入理解了ARM处理器的中断机制,包括中断触发、中断处理和中断返回等关键环节。

实验结论:
通过本次实验,我们进一步加深了对ARM处理器中断机制的理解,掌握了中断处理的相关知识和技能。

同时,我们也意识到中断处理在实际应用中的重要性
和必要性,为今后的ARM开发和应用奠定了坚实的基础。

总结:
ARM中断实验是一次富有成效的实践活动,通过实验我们不仅学习到了理论知识,还掌握了实际操作技能。

相信在今后的学习和工作中,我们将能够更加熟
练地应用ARM中断处理技术,为ARM相关产品的开发和应用做出更大的贡献。

arm实训总结

arm实训总结

arm实训总结标题:ARM实验实训总结报告一、前言本次ARM实验实训是我对嵌入式系统设计与开发的一次深度实践。

通过这次实训,我对ARM微处理器的结构原理、指令集以及基于ARM架构的嵌入式系统开发流程有了更为直观和深入的理解。

二、实训内容回顾在实训过程中,我们主要围绕ARM Cortex-M系列处理器进行学习和实践。

首先,从理论层面,我们系统地学习了ARM体系结构、工作模式、存储器管理、异常处理等基础知识;其次,在实践环节,我们使用Keil MDK等开发工具进行了汇编和C语言编程,完成了中断服务程序设计、定时器应用、串口通信等多个实战项目。

三、实训过程及收获1. 硬件操作与调试:通过对ARM开发板的实际操作,我亲身体验了硬件连接、程序下载、在线调试等环节,对硬件底层的工作原理有了更清晰的认识,也锻炼了我的动手能力和问题解决能力。

2. 软件编程与实现:通过编写和调试ARM汇编和C语言代码,我对ARM的指令集、寄存器配置、中断处理机制等有了深入理解,同时也提升了我的编程技能和逻辑思维能力。

3. 团队协作与交流:在完成复杂项目的过程中,我们分工合作,共同探讨解决方案,这不仅提高了我在团队环境下的工作效率,也锻炼了我与他人沟通协调的能力。

四、实训反思与展望尽管在实训过程中取得了一定的进步,但我也意识到自身在某些方面还有待提升,如对实时操作系统RTOS的理解与应用、硬件驱动程序的设计与优化等。

未来的学习中,我将深化对这些领域的研究,努力提升自己在嵌入式系统开发方面的综合能力。

总结,此次ARM实训是一次宝贵的实践经历,它使我对嵌入式系统的软硬件协同设计有了更深层次的认知,并为我后续从事相关领域的工作或研究打下了坚实的基础。

五、结语ARM实训不仅是对我现有知识的检验,更是对未来专业技能的磨砺。

我会珍视这份实践经验,以此为契机,持续探索并深化对嵌入式系统尤其是ARM架构技术的研究,为我国的科技创新事业贡献自己的力量。

5_ARM实验报告

5_ARM实验报告

5_ARM实验报告
实验名称:ARM处理器实验报告
实验目的:通过实验掌握ARM处理器的基本结构和工作原理,了解ARM指令的执行过程以及汇编语言编程的基本方法。

实验设备:ARM处理器开发板、电脑、开发软件Keil等。

实验步骤:
1. 准备工作:连接ARM开发板和电脑,打开Keil软件,新建一个工程。

2. 编写程序:在Keil软件中编写一个简单的程序,比如将两个数相加并将结果输出。

3. 编译程序:通过Keil软件进行编译,生成可执行文件。

5.调试程序:在ARM开发板上运行程序,并观察程序的运行结果。

6.分析程序:分析程序的运行过程,了解ARM指令的执行过程和程序的运行逻辑。

实验结果:
通过本次实验,我对ARM处理器的基本结构和工作原理有了更深入的了解。

我了解了ARM指令的执行过程,掌握了汇编语言编程的基本方法。

在实验中,我成功编写了一个简单的程序,并在ARM开发板上成功运行并输出了结果。

总结与反思:
通过本次实验,我对ARM处理器有了更深入的了解,对汇编语言编程也有了更多的实践经验。

我发现在编写程序时需要考虑指令的执行顺序和逻辑关系,需要注意程序的优化和逻辑性。

在今后的学习和工作中,我将继续深入学习ARM处理器的原理和应用,不断提高自己的编程技能和实践能力。

结论:
本次实验让我在实践中掌握了ARM处理器的基本原理和工作方法,提高了自己的实践能力和编程技能。

我将继续学习和实践,不断提高自己在ARM处理器领域的水平,为将来的工作和研究打下坚实的基础。

湖南工业大学电自专业89s51单片机实验报告(DOC)

湖南工业大学电自专业89s51单片机实验报告(DOC)

实验一二进制转换成十进制实验一、实验设备1.THGQC-1型嵌入式单片机实验开发系统-套。

2.PC机一台。

二、实验目的掌握汇编语言设计和实验步骤,熟悉在KEIL环境下观察内部RAM 的方法。

三、实验内容单片机中的数值有各种表达方式,这是单片机的基础。

掌握各种数制之间的转换是一种基本功。

本实验内容是将一个给定的一字节二进制数,通过编程将其转换成十进制码。

四、实验步骤1)启动PC机,打开KEIL软件,软件设置为模拟调试状态。

在所建的Project文件中添加TOBCD.ASM文件,打开TOBCD.ASM文件,阅读、分析、理解程序,编译程序进行调试(如何建立工程请看附录说明)2)打开RAM观察窗口,根据示例程序注释设置断点,运行程序。

程序具体功能是将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#0ffh。

打开MEMORY WINDOW数据窗口,(在MEMORY#1中输入D:30H)观察RAM地址30H、31H、32H的数据变化30H更新为02,31H更新为05,32H更新为05。

3)修改源程序中给累加器A的赋值,重复实验,观察实验效果。

4)打开CPU寄存器窗口,选择单步或跟踪执行方式运行程序,观察各寄存器的变化可以看到程序执行的过程,加深对实验的了解。

五、实验程序参考框图六、实验程序RESULT EQU 30HORG 0000HJMP STARTORG 0100HSTART:MOV SP,#40HMOV A,#0FFHCALL BINTOBCDNOP ;此处设置断点,察看RAM 30H,31H,32HLJMP $BINTOBCD:MOV B,#100DIV ABMOV RESULT,A ;除以100得百位数MOV A,BMOV B,#10DIV ABMOV RESULT+1,A ;余数除以10得十位数MOV RESULT+2,B ;余数为个位数RETEND七.实验程序编译和结果分析图1为keil2程序编辑器的编译窗口。

湖南工业大学ARM实验报告

湖南工业大学ARM实验报告

ARM嵌入式系统原理及应用开发实验报告学院:电气与信息工程学院班级:电子信息1204指导老师:谭会生姓名:学号:实验一:ARM汇编指令使用实验——基本数学/逻辑运算一、实验目的1.初步学会使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。

2.通过实验掌握数据传送和基本数学/逻辑运算的ARM汇编指令的使用方法。

二、实验设备1.硬件:PC机。

2.软件:ADS 1.2 / Embest IDE 200X集成开发环境。

三、实验内容熟悉ADS 1.2 / Embest IDE 200X开发环境的使用,使用LDR/STR和MOV等指令访问寄存器或存储单元,实现数据的加法运算。

具体实验参考程序如下:四.实验操作步骤1.新建工程。

先建立一个实验文件夹,如E\ARMSY\armasm1;然后运行Embest IDE 集成开发环境,选择File→New Workspace菜单项,弹出一个对话框,输入工程名armasm1a/armasmlb等相关内容;最后单击OK按钮,将创建一个新工程,并同时创建一个与工程名相同的工作区。

此时在工作区窗口将能打开该工作区和工程。

2.建立源文件。

选择File→New菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。

编辑完后,保存文件armasmla. s。

1)armasmla. s源程序:/* armasm1a.s */.EQU X, 45 /*定义变量X,并赋值为45*/.EQU Y, 64 /*定义变量Y,并赋值为64*/.EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/.GLOBAL _START.TEXT_START: /*程序代码开始标志*/MOV SP, #STACK_TOPMOV R0, #X /*X的值放入R0*/STR R0, [SP] /*R0的值保存到堆栈*/MOV R0, #Y /*Y的值放入R0*/LDR R1, [SP] /*取堆栈中的数到R1*/ADD R0, R0, R1STR R0, [SP]STOP: B STOP /*程序结束,进入死循环*/.END2).使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。

5_ARM实验报告

5_ARM实验报告

5_ARM实验报告[实验报告]实验名称:5_ARM实验实验目的:1.了解ARM架构的特点和基本原理;2.掌握ARM指令集和编程模式;3.学会使用ARM开发工具进行编程和调试;4.实现一个简单的ARM程序并运行。

实验器材:1.ARM开发板;2.电脑;B数据线。

实验步骤:1.搭建开发环境根据实验指导书的步骤,将开发板与电脑连接,安装开发工具和驱动程序。

2.学习ARM指令集和编程模式通过阅读教材和参考资料,了解ARM指令集的基本原理和常用指令。

同时,学习ARM的编程模式,包括程序的加载、运行和调试等。

3.编写ARM程序根据实验要求,编写一个简单的ARM程序。

这个程序可以是一个简单的计算器,或者是一个LED灯的控制程序等。

编写程序时需要注意使用合适的指令和编程模式。

4.编译和烧录程序使用ARM开发工具,将编写好的程序进行编译和烧录。

编译过程会生成一个可执行的二进制文件,烧录过程会将这个二进制文件加载到开发板上。

5.调试并运行程序通过ARM开发工具进行调试,检查程序中可能存在的错误,并进行修正。

调试过程中需要注意程序的执行流程和变量的值等。

调试完成后,运行程序并观察其运行结果。

实验结果与分析:在实验中,我成功地搭建了ARM的开发环境,学习了ARM指令集和编程模式,并编写了一个简单的ARM程序。

经过编译和烧录,我成功地将程序加载到开发板上,并通过调试和运行,验证了程序的正确性。

实验中遇到的问题和解决方法:在编写程序的过程中,我遇到了一些语法错误和逻辑问题。

通过阅读资料、查找文档和与同学的讨论,我解决了这些问题。

在调试的过程中,我还遇到了一些程序运行速度过慢的问题。

通过优化代码和使用合适的编译选项,我解决了这个问题。

实验总结:通过这次实验,我对ARM架构有了更深入的了解,掌握了ARM指令集和编程模式的基本原理和使用方法。

通过编写和调试一个简单的ARM程序,我提高了自己的编程能力和解决问题的能力。

实验还让我明白了实际应用中ARM的重要性,以及它对于现代计算机系统的作用。

ARM实验报告

ARM实验报告

ARM实验报告朱银忠1、实验目的(1)熟悉LPC2378的结构功能和代码体系。

(2)熟悉LPC2378实验板的各个模块功能。

(3)掌握基本的硬件电路的连接和调试方法。

(4)利用按键模块,显示模块和主控CPU实现简单的功能。

2、实验步骤(1)学习并熟悉电路图,理解掌握LPC2378及其各个模块的电路连接结构和工作方法。

(2)将LPC2378和其他外围原件焊接在实验板上。

(3)学习keil C的使用方法,建立一个工程。

并利用keil C将所有的主程序和外围程序烧写到LPC2378中。

(4)上电测试各个模块是否正常工作,如果不正常工作则找到原因并解决故障。

(5)通过keil C 编写一个小程序,在LPC 2378实验板上实现一定的功能。

3、硬件调试结果(1)上电后经万用表测试,电压转换电路工作正常,芯片供电电压为3.3V,部分外围元件为5V。

(2)在keil C 中建立工程后,通过进行合适的配置成功的将程序下载进了LPC2378。

(3)将串口模块通过串口线和计算机连接后。

利用串口调试助手软件测试串口模块工作正常。

(4)通过对SD卡的读写操作测试证明SD卡模块工作正常。

(5)通过对键值的读取证明按键模块工作正常。

(6)液晶模块在插上排线后没有反应,经检查,发现接口和封装并不匹配。

将接口调换位置后重新插上排线,再通过调节电位器到合适的位置,液晶可以正常工作。

4、程序功能和实现思路该程序通过LPC2378对液晶模块和按键模块的联合控制,实现了一个“推箱子”游戏的功能。

该程序基本实现思路为,通过按键函数读取键值得到上、下、左、右四个方向的命令。

根据命令控制“人”的位置和“箱子”的位置。

在屏幕上显示“人”的位置和“箱子”的位置,最终当“人”将“箱子”推到预定地点后,游戏结束。

5、程序清单#include "LPC23XX.h"#include "CONFIG.h"#include "GPIO.h"#include "LCD.h"#include "IRQ.h"#include "RTC.h"#include "TIMER.h"#include "KEY.h"#include "I2C.h"#include "UART.h"#include "MOTOR.h"#include "RS485.h"#include "stdio.h"#include "stdlib.h"#define UP 0x34#define DOWN 0x63#define LEFT 0x32#define RIGHT 0x36unsigned int i,j;unsigned char deslocatex[]={13,14};unsigned char deslocatey[]={13,14};unsigned char flag0=0,flag1=0;unsigned char temp;unsigned char ss[];unsigned int sc=0;unsigned long time=100000;static int step=0;unsigned int cant=0 ;struct BOX{unsigned int x;unsigned int y;}Box1,Box2,Box3,Box0;int main(){ config_IO();init_VIC();LCD_Initial();KEY_Initial();I2C_Initial(0x01,40000); //主模式,时钟400KHZI2C_WriteNByte(AT24C64,0x0000,s,sizeof(s)-1);LCD_Delay(1000 );I2C_ReadNByte(AT24C64,0x0000,d,sizeof(s)-1);SCS |= 1; //允许P0、P1的高速GPIO功能PINSEL10 = 0; //禁止EMCPINSEL3=0X00000000;FIO1DIR=0X00040000;FIO1CLR=0X00040000;Logo();//开场动画start:Clr_Screen();c=0;time=50000;Box0.x=3;Box0.y=2;Box1.x=4;Box1.y=2;Box2.x=3;Box2.y=3;Box3.x=4;Box3.y=3;BoxBody(Box0.x,Box0.y);BoxBody(Box1.x,Box1.y);BoxBody(Box2.x,Box2.y);BoxBody(Box3.x,Box3.y);map();while(1){ if(cant==1){Printstr(16,70,"can't ");Printstr(16,90,"move");}cant=0;switch(ReadBC7281(KEY_LATCH)){ case UP:if((Box0.y==1&&Box1.y==1)||(4<=Box0.x<=5&&Box0.y==8)||(Box0.x>=11&&Box 0.y==8)){cant=1;LCD_Delay(time);break;} //can ?else{Clr_part(Box2.x,Box2.y);Clr_part(Box3.x,Box3.y);Box2.y=Box0.y;Box3.y=Box1.y;Box0.y-=1;Box1.y-=1;step++;LCD_Delay(time);break ;}case DOWN://if(((1<=Box0.x<=5)&&(Box0.y==5))||(Box0.x>=11&&(Box0.y==5))||(Box0.y==13)) if((1<=Box0.y<=4)||(5<=Box0.y<=7&&6<=Box0.x<=10)||(8<=Box0.y<=13&&4<=B ox0.x<=13)){Clr_part(Box0.x,Box0.y);Clr_part(Box1.x,Box1.y);Box0.y=Box2.y;Box1.y=Box3.y;Box2.y+=1;Box3.y+=1;step++;LCD_Delay(time);break;}else {cant=1;LCD_Delay(time);break;}case LEFT:if((Box0.x==1)||(Box0.x==6&&Box0.y==7)||(Box0.x==4&&Box0.y>=8)) {//Printstr(19,110,"Can't Move");cant=1;LCD_Delay(time);break;}else{Clr_part(Box1.x,Box1.y);Clr_part(Box3.x,Box3.y);Box1.x=Box0.x;Box3.x=Box2.x;Box0.x-=1;Box2.x-=1;step++;LCD_Delay(time);break;}case RIGHT:if((Box1.x==16)||(Box1.x==11&&Box1.y==7)||(Box1.x==14&&8<=Box1.y<=12)) {cant=1;LCD_Delay(time);break;}else{Clr_part(Box0.x,Box0.y);Clr_part(Box2.x,Box2.y);Box0.x=Box1.x;Box2.x=Box3.x;Box1.x+=1;Box3.x+=1;step++;LCD_Delay(time);break;}}BoxBody(Box0.x,Box0.y);BoxBody(Box1.x,Box1.y);BoxBody(Box2.x,Box2.y);BoxBody(Box3.x,Box3.y);LCD_Delay(time);if(Box0.x==13&&Box0.y==13){Printstr(19,110,"Win !");LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);restart();LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);goto start;}}}6、程序运行结果(1)7、问题分析。

arm实验报告

arm实验报告

arm实验报告ARM实验报告引言:ARM(Advanced RISC Machines)是一种基于精简指令集计算机(RISC)架构的微处理器系列,广泛应用于移动设备、嵌入式系统和智能家居等领域。

本实验报告旨在介绍ARM架构的基本原理、应用领域以及在实验中的应用。

一、ARM架构的基本原理ARM架构采用精简指令集计算机(RISC)的设计理念,注重指令的简洁性和执行效率。

相较于复杂指令集计算机(CISC),ARM架构的指令集更为简单,指令长度固定,执行速度更快,能够提高处理器的性能和能效比。

ARM架构的核心特点包括:1. 简洁指令集:ARM指令集采用三地址指令格式,指令长度为32位,操作码和寄存器字段清晰明了,易于编程和优化。

2. 统一寄存器:ARM架构中的寄存器集合统一,包括13个通用寄存器、程序计数器(PC)和状态寄存器(CPSR),简化了编程和寄存器间的数据传输。

3. 流水线技术:ARM处理器采用流水线技术,将指令的执行过程分为多个阶段,使得多条指令可以同时执行,提高了处理器的吞吐量。

4. 片上缓存:ARM架构支持片上缓存(Cache),能够提高数据的访问速度和处理器的效率。

二、ARM架构的应用领域1. 移动设备:由于ARM处理器具有低功耗和高性能的特点,广泛应用于智能手机、平板电脑和可穿戴设备等移动设备中。

ARM处理器能够提供流畅的用户体验和长时间的电池续航能力。

2. 嵌入式系统:ARM架构适用于嵌入式系统,如智能家居、工业自动化和车载电子等。

ARM处理器的小尺寸、低功耗和高性能使其成为嵌入式系统的首选。

3. 服务器和云计算:ARM架构逐渐在服务器和云计算领域崭露头角。

ARM服务器具有低能耗和高并发处理的特点,能够满足云计算和大数据处理的需求。

三、ARM实验应用在本次实验中,我们使用ARM开发板进行了一系列实验,包括LED控制、按键输入和串口通信等。

1. LED控制实验:通过编写ARM汇编语言程序,实现对开发板上的LED灯进行控制。

arm实验报告

arm实验报告

实验二:编写程序将R2的高8位传送到R3的低8位(一),程序代码:.global _start.text_start:mov r2,#0x33000000mov r3,#0x00000022mov r1,r2,LSR#24ORR r3,r1,r3,LSL#8stop:b stop.end(每一条的指令分析如下)(二),实验结果及分析:按F11单步跟踪,看寄存器中内容的变化:1,将寄存器R2赋值0x33000000 :2,将0x00000022写入寄存器R3中:3,将R2的内容右移24位,将结果写入R1,R2保持不变4,将R3的值左边移动8位与R1逻辑或,再将结果放到R3中实验结果:实验三实验64位的加法运算:要求[R1:R0]+[R3:R2]结果放到[R1:R0](一),程序代码.global _start.text_start:mov r0,#0x10000000mov r1,#0x11000000mov r2,#0x22000000mov r3,#0x20200000ADDS R0,R0,R2ADC R1,R1,R3stop:b stop.end(二),实验结果及分析1,给R0赋值2,给R1赋值3,给R2赋值4,给R3赋值5,R0与R2相加,结果写入R06,再将R1与R3带进位位相加,把结果写入R1。

R2R3寄存器的内容不变实验结果:实验7:编写一段程序实现10!(一),程序代码.global _start.text_start:ldr r0,=10 @ 将R0赋值为十进制的10mov r1,r0 @将R0的内容写进R1 ,R0的内容保持不变lable: sub r1,r1,#1 @R1的内容减去1 ,结果送回R0 mul r0,r1,r0 @将R0与R1寄存器的内容相乘,结果写入R0。

R1保持不变cmp r1,#1 @ 将R1的值与1 相比较,看是否相等bgt lable @倘若不为1 ,则跳到lable进行循环stop: @否则停止b stop.end(二),实验结果及分析单步调试,由于寄存器的变换图比较多,只截取最后结果图实验结果:实验8:串拷贝(R0指向源数据串的首地址,R1指向目的数据串的首地址)(一),程序代码.global _start.equ num,8 @定义num= =8_start:LDR R0,=src @将src的值赋给R0LDR R1,=dst @将dst的值赋给R1mov r3,#num @ 将8赋给R3mov lr,pcB strcopystop: b stopstrcopy:LDRB R2,[R0],#1 @加载无符号字节数据STRB R2,[R1],#1 @存储无符号字节数据subs r3,r3,#1 @R3减去1 ,结果送入R3CMP R3,#0 @将R3的内容与0相比较看是否相等BNE strcopymov PC,LR.datasrc:.long 1,2,3,4,5,6,7,0 @定义srcdst:.long 2,4,3,5,6,2,5,0 @定义dst.end(二),实验结果及分析实验结果:心得体会:开始的时候,在实验中编译连接成功后,点击debug的connect后总出现warning:load symbol file failed. 找了些原因,不知道怎么回事,后来才发现在开始的设置中的setting中设置download时忘记同时设置的generate了,当设置好后就解决了该warning。

arm程序设计实验报告

arm程序设计实验报告

arm程序设计实验报告ARM程序设计实验报告一、引言ARM(Advanced RISC Machine)是一种精简指令集计算机(RISC)架构。

在本次实验中,我们将学习和实践ARM程序设计的基本知识和技巧。

本报告将介绍实验的目标、步骤和结果,并对所学内容进行总结和思考。

二、实验目标本次实验的主要目标是通过编写ARM汇编程序,实现简单的功能。

具体来说,我们将学习如何使用ARM汇编语言编写程序,了解寄存器、指令和内存的基本概念,以及如何进行程序的调试和优化。

三、实验步骤1. 环境准备:安装ARM开发工具链,并配置开发环境。

2. 编写程序:根据实验要求,编写ARM汇编程序,实现指定的功能。

3. 调试与测试:使用模拟器或硬件平台,调试和测试编写的程序,确保程序的正确性和稳定性。

4. 优化改进:根据实验结果和性能要求,对程序进行优化改进,提高程序的效率和可靠性。

四、实验结果在本次实验中,我们成功完成了以下任务:1. 实现了一个简单的计算器程序,可以进行加减乘除运算,并输出结果。

2. 编写了一个字符串反转程序,可以将输入的字符串逆序输出。

3. 设计了一个简单的游戏程序,用户需要通过按键控制角色移动,避开障碍物。

通过以上实验,我们掌握了ARM汇编语言的基本语法和指令,了解了寄存器和内存的使用方法,以及如何进行程序的调试和优化。

同时,我们还学习了如何与外部设备进行交互,实现更复杂的功能。

五、实验总结通过本次实验,我们深入了解了ARM程序设计的基本原理和技巧。

ARM架构的精简指令集使得程序设计更加高效和灵活,适用于各种嵌入式系统和移动设备。

同时,ARM处理器的低功耗特性也使得其在无线通信、物联网等领域有着广泛的应用前景。

然而,ARM程序设计也存在一些挑战和难点。

首先,由于ARM汇编语言与高级语言相比,语法更为底层和复杂,需要更加深入地理解计算机硬件结构。

其次,ARM处理器的架构和指令集不同于传统的x86架构,需要重新学习和适应。

大学ARM嵌入式实验报告范文

大学ARM嵌入式实验报告范文

大学ARM嵌入式实验报告范文《嵌入式系统》实验报告姓名:学号:班级:2022年4月实验一ARM汇编指令实验1一、实验目的1.初步学会使用ADS1.2开发环境及ARM软件模拟器;2.通过实验掌握简单ARM汇编指令的使用方法。

二.实验设备1.硬件:PC机;2.软件:ADS1.2集成开发环境。

Window98/2000/NT/某P。

三.实验内容1.熟悉开发环境的使用,并使用LDR/STR和MOV等指令访问寄存器或存储单元。

2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。

四.实验原理ARM处理器共有37个寄存器:31个通用寄存器,包括程序计数器(PC),这些寄存器都是32位;6个状态寄存器,这些寄存器也是32位,但只使用了其中的12位。

1.ARM通用寄存器通用寄存器(R0~R15)可分为3类,即不分组寄存器R0~R7.分组寄存器R8~R14.程序计数器R15。

2.存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合。

字节0~3存放第一个字,字节4~7存放第2个字,以此类推。

ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。

五.实验程序1.实验A参考程序某EQU45:定义变量某,并赋值为45YEQU64:定义变量y,并赋值为64STACK_TOPEQU0某1000:定义栈顶0某1000AREAE某ample,CODE,READONLY:声明代码段ENTRY:标识入口STARTMOVSP,#STACK_TOPMOVR0,#某:某的值放入R0STRR0,[SP]:R0的值保存到堆栈MOVR0,#Y:y的值放入R0LDRR1,[SP]:取堆栈中的数到R1ADDR0,R0,R1STRR0,[p]STOPBSTOP:死循环END:结束2.实验B参考程序某EQU45:定义变量某,并赋值为45YEQU64:定义变量y,并赋值为64ZEQU87:定义变量z,并赋值为87STACK_TOPEQU0某1000:定义堆栈顶0某1000AREAHU某IANG,CODE,READONLY:声明代码段,只读ENTRY:标识入口STARTMOVR0,#某:某的值放入R0MOVR0,R0,LSL#8:R0的值乘以2的8次方MOVR1,#Y:y的值放入R1ADDR2,R0,R1,LSR#1:R1的值除以2加上r0的值放入R2MOVSP,#0某1000STRR2,[SP]MOVR0,#Z:z的值放入R0ANDR0,R0,#0某FF:取R0的低八位MOVR1,#Y:y的值放入R1ADDR2,R0,R1,LSR#1:R1的值除以2加上r0的值放入R2LDRR0,[SP]:y的值放入R1MOVR1,#0某01ORRR0,R0,R1MOVR1,R2:y的值放入R1ADDR2,R0,R1,LSR#1:R1的值除以2加上r0的值放入R2STOPBSTOP:死循环END:结束六.实验结果及分析1.程序A的实验结果截图如下:实验分析;本实验使用LDR、STR、MOV等指令访问寄存器和存储单元,使用堆栈和寄存器R0,R1存储变量。

湖南工业大学单片机实验报告 2外部中断实验

湖南工业大学单片机实验报告 2外部中断实验

实验二、外部中断实验一、实验目的1. 掌握外部中断技术的基本使用方法2.掌握中断处理程序的编写方法二、实验设备PC机、Keil 软件、Proteus软件。

三、实验内容1.在Proteus中绘制图1电路,加载给定目标代码文件进行调试。

图1 LED灯的开关控制四、实验程序解析#include <AT89X52.H> //包含AT89X52.H头文件sbit S1=P1^5; //定义S1与P1.5位对应sbit LED1=P1^0; //定义LED1与P1.0位对应void main (void){while(1){if(S1==0)LED1=0; // 开关闭合,P1.0=0,LED点亮elseLED1=1; //开关断开,P1.0=1,LED熄灭}}五、实验原理说明1、外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。

中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。

因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入,本实验由INT0(P3.2)引入。

2、中断服务的关键:a、保护进入中断时的状态。

堆栈有保护断点和保护现场的功能使用PUSH指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。

b、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。

c、用POP指令恢复中断时的现场。

3、中断控制原理:中断控制是提供给用户使用的中断控制手段。

实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。

4、中断响应的过程:首先中断采样然后中断查询最后中断响应。

采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。

ARM嵌入式实验报告

ARM嵌入式实验报告

ARM嵌入式实验报告一、实验目的本次实验的目的是了解ARM嵌入式系统的基本概念、架构,并通过实际操作了解ARM嵌入式系统的软硬件调试方法和流程。

二、实验原理ARM(Advanced RISC Machines)是一种精简指令集计算(RISC)架构的处理器。

在嵌入式系统领域,ARM处理器具有低功耗、高性能、易扩展等特点,被广泛应用于移动设备、物联网等领域。

本次实验使用的是ARM Cortex-M系列处理器,其主要特点如下:1.低功耗:采用了先进的低功耗技术,适用于电池供电的嵌入式系统。

2.高性能:采用了指令流水线和乱序执行等技术,提高了处理器的运行效率。

3.易扩展:支持多核架构和内核扩展,满足不同应用的需求。

在实验中,我们将通过Keil MDK开发环境和ARM开发板进行ARM嵌入式系统的开发,实现简单的功能。

三、实验步骤1.硬件搭建:连接ARM开发板,通过USB进行电源供给和通信。

2. 软件配置:在Keil MDK中配置开发环境,包括选择芯片型号、设置编译器和调试器等。

3.编写程序:使用C语言编写嵌入式程序,通过调用ARM提供的库函数实现所需功能。

5.调试和测试:通过调试器对程序进行调试,并使用示波器等工具进行性能测试和验证功能的正确性。

四、实验结果经过实验,我们成功实现了一个简单的功能:通过按键控制LED灯的亮灭。

在按键按下的时候,LED灯会亮起,松开按键后,LED灯熄灭。

五、实验总结通过本次实验,我们深入了解了ARM嵌入式系统的基本概念和架构,并通过实际操作了解了ARM嵌入式系统的软硬件调试方法和流程。

掌握了Keil MDK开发环境的使用技巧,学会了使用ARM提供的库函数编写嵌入式程序。

同时,我们也注意到了ARM嵌入式系统具有低功耗、高性能和易扩展等特点,对于实际应用具有很大的潜力。

然而,本次实验只是一个简单的示例,还远远不能满足实际应用的需求。

在未来的学习中,我们将进一步学习ARM嵌入式系统的高级应用,包括操作系统移植、网络通信和多任务处理等方面的知识,以便更好地应对实际的项目开发需求。

arm开发环境搭建实验报告实验内容

arm开发环境搭建实验报告实验内容

ARM开发环境搭建实验报告一、实验目的本实验旨在帮助学生了解和掌握ARM开发环境的搭建过程,包括交叉编译环境的搭建、嵌入式系统开发环境的搭建、ARM Linux操作系统的搭建以及应用软件的开发与部署。

通过本次实验,学生将能够熟悉ARM开发的基本流程,为后续的ARM开发打下基础。

二、实验内容1. 开发环境介绍本部分将介绍ARM开发环境的基本概念、组成和搭建流程。

重点讲解ARM架构的特点、开发板的选择以及开发工具链的组成。

通过本部分的学习,学生将能够对ARM开发环境有基本的了解和认识。

2. 交叉编译环境搭建交叉编译是指在一种平台上生成另一种平台上的可执行文件。

本部分将介绍如何搭建ARM交叉编译环境,包括交叉编译工具链的安装、配置和使用。

同时,学生将通过实践操作,掌握交叉编译的基本方法。

3. 嵌入式系统开发环境搭建嵌入式系统是指专为特定应用而设计的计算机系统。

本部分将介绍如何搭建嵌入式系统开发环境,包括开发板的连接、调试工具的安装以及嵌入式操作系统的选择和烧写。

通过本部分的学习,学生将能够掌握嵌入式系统开发的基本流程。

4. ARM Linux 操作系统搭建ARM Linux操作系统是一种针对ARM架构的开源操作系统。

本部分将介绍如何搭建ARM Linux操作系统,包括操作系统的下载、烧写以及启动过程。

同时,学生将学习如何在ARM Linux上安装软件、配置网络等操作,以便进行后续的应用软件开发。

5. 应用软件开发与部署本部分将介绍如何进行ARM应用软件开发与部署。

首先,学生将学习如何使用交叉编译工具链编译应用程序;其次,学生将学习如何将应用程序部署到ARM设备上,并进行测试和调试。

通过本部分的学习,学生将能够掌握ARM应用软件开发的整个流程。

三、实验步骤1. 安装交叉编译工具链,并配置环境变量;2. 连接开发板,并安装调试工具;3. 下载并烧写嵌入式操作系统;4. 安装ARM Linux操作系统;5. 编写应用软件源代码;6. 使用交叉编译工具链编译应用软件;7. 将应用软件部署到ARM设备上;8. 进行测试和调试。

ARM实验报告综合实验

ARM实验报告综合实验

ARM实验报告综合实验摘要:ARM微处理器已经在各种电子产品中得到广泛应用。

本实验旨在通过对ARM实验板的详细学习,深入理解和掌握ARM微处理器的工作原理及应用。

通过搭建实验平台,完成基本的指令执行、数据传输和I/O操作等功能。

通过实验,掌握ARM汇编语言的基本语法和实现方法,同时提升对嵌入式系统的理解和应用能力。

关键词:ARM微处理器、实验平台、指令执行、数据传输、I/O操作、汇编语言1.引言ARM(Advanced RISC Machines)微处理器是一种精简指令集(RISC)的微处理器架构,以其高性能、低功耗和广泛应用等特点受到了广泛的关注和应用。

本实验旨在通过对ARM实验板的学习和研究,深入理解ARM微处理器的工作原理和应用。

2.实验目的2.1理解ARM微处理器的工作原理;2.2掌握ARM汇编语言的基本语法和实现方法;2.3学习搭建实验平台,完成指令执行、数据传输和I/O操作等功能;2.4提升对嵌入式系统的理解和应用能力。

3.实验内容3.1搭建实验平台3.2学习ARM汇编语言通过阅读相关资料,了解ARM汇编语言的基本语法和寄存器等特点,了解ARM微处理器的指令集和指令执行方式。

3.3编写实验程序根据实验指导书中的要求,编写实验程序,包括基本的指令执行、数据传输和I/O操作等功能实现。

3.4调试和测试经过编写程序后,需要进行调试和测试,确保程序能够正确执行,并达到预期的功能。

4.实验结果通过实验,成功搭建了ARM实验平台,并且实现了基本的指令执行、数据传输和I/O操作等功能。

通过对ARM汇编语言的学习和实践,掌握了其基本语法和实现方法。

5.结论本实验通过对ARM实验板的学习和研究,深入理解了ARM微处理器的工作原理和应用。

通过搭建实验平台和编写实验程序,进一步掌握了ARM 汇编语言的基本语法和实现方法。

通过调试和测试,验证了程序的正确性和功能实现。

通过本实验,提升了对嵌入式系统的理解和应用能力。

ARM 实验报告范本

ARM 实验报告范本
stop:
b stop
.end
⑵、实验内容:
跟踪10次后的答案是:0x375f00
⑶、结果分析:
10!=10x9x8x7x6x5x4x3x2x1=3638800,转化为16进制为375f00(3x165+7x164+5x163+15x162+0x161+0x160=3145728+458752+20480+3840=3628800)
and R3,R3,#0xffffff00;屏蔽掉R2的低8位
orr R3,R3,R2;用取或将R2的低8位移到R3得低8位
stop:
b stop
.end
⑵、实验内容:
将存储在R2中
将存储在R3中
将R2中的高8位“12”移到R2的低8位,原来的数“”变为“”
屏蔽掉R2中的高24位,采用或命令时使其不影响R3中高24位的数值
A R M与嵌入Βιβλιοθήκη 技术实验报

1、编写程序将R2的高8位传送到R3的低8位(不考虑R3的其他位)
⑴、程序代码:
.global _start
_start:
将立即数存储到R2中
;将存储在R3中
mov R2,R2,ROR #24;循环移位24位,使R2中的高八位移到第八位
and R2,R2,#0x000000ff;屏蔽掉R2的高24位,
9+9+0=2,C=1;8+8+1=1,C=1。
相加后的结果为:8989eeee+8949556f =12d3445d,可以看出高32位相加得出的结果和实验得出的结果一样。
所以由结果可以看出实验成功!
3、编写一段程序计算10!

arm实验报告

arm实验报告

ARM实验报告实验一:
1、编写程序将R2的高8位传送到R3的低8位(不考虑R3的其它位)
2、实验内容以及实验程序代码如下:
3、程序分析:考虑先将R2的数据又移24位,送入R1,再将R3中的数据左
移8位后与R1的数据相或,结果送入R3,即实现将R2的高8位
传送到R3的低8位
实验二:
1、实现64位的加法运算,要求【R1:R0】+【R3:R2】,结果放
回【R1:R0中
2、实验程序如下:
3、实验结果如下:
实验三:
1、实验内容:编写一段程序计算10!
2、程序分析:先给R1、R0赋初值1、2,然后进入循环结构——R0与R1
相乘之后结果保存在R1中,之后R0加1并进行上限判断。

直到R0为
11为止。

3、实验结果如下:
实验四:
1、实验内容:字符串拷贝(R1指向源数据串的首地址,R0指向目的数
据串的首地址
2、实验程序如下:
3、程序分析如下:首先输入两个字符串str1、str2,并让R0指向str1、R1
指向str2. 然后将R0所指的内容按字节先加载后存储到R2,并循环执行
4、实验结果如下:
实验心得:第一次写汇编语言,在实验中遇到过许多各种各样的问题,在自己努力学习和同学的相互帮助下都得到了解决。

做本次实验之前一定要对实验软件熟悉,有关于汇编语言和arm的基本知识要熟练,多看程序多编。

arm实验报告最终版

arm实验报告最终版

ARM与嵌入式技术实验报告专业班级:10通信工程1班姓名:万洁学号:100103011125实验日期:2013年5月28日指导老师:郑汉麟1、 通过实验掌握ARM 指令的特点和寻址方式;2、 掌握简单的ARM 汇编语言的程序设计;3、 了解集成开发环境 Embest IDE 及其开发软件的应用;、实验环境Embest IDE 应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备 的面向嵌入式系统的开发和调试工具。

其开发软件 Embest IDE for ARM 是集编辑器、编译 器、调试器、工程管理器( projectma nager )于一体的高度集成的窗口环境,用户可以在Embest IDE 集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应 用程序。

三、实验步骤1)新建工程:运行Embest IDE 集成开发环境,选择菜单项 File 宀New Workspace ,如图一,系统弹出一个对话框,键入文件名“ wj ”,如图二,点击 0K 按钮。

将创建一个新工程,并同时创 建一个与工程名相同的工作区。

此时在工作区窗口将打开该工作区和工程 .。

(老师提醒:不要放入Bin 文件夹中)■ Emb«t QE Pre 亠 Educat「販]£dii_VwwBuid frtbug D if** Qri+W 诊 Open-"Qrl*O2)建立源文件:点击菜单项 File T New ,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。

编辑完后,保存文件“ wj.s ”后缀,如图三,四。

Hr*Open Workspace.・图一■■ rflJO IUU rl jil rd f rfl,rlClop: h Ho. .end图tut vUrl:3)添加源文件:选择菜单项Project T Add To Project Files,在工程目录下选择刚才建立的源文件.s 后缀文件,如图五,图六,图七。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM嵌入式系统原理及应用开发实验报告学院:电气与信息工程学院班级:电子信息1204指导老师:谭会生姓名:学号:实验一:ARM汇编指令使用实验——基本数学/逻辑运算一、实验目的1.初步学会使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。

2.通过实验掌握数据传送和基本数学/逻辑运算的ARM汇编指令的使用方法。

二、实验设备1.硬件:PC机。

2.软件:ADS 1.2 / Embest IDE 200X集成开发环境。

三、实验内容熟悉ADS 1.2 / Embest IDE 200X开发环境的使用,使用LDR/STR和MOV等指令访问寄存器或存储单元,实现数据的加法运算。

具体实验参考程序如下:四.实验操作步骤1.新建工程。

先建立一个实验文件夹,如E\ARMSY\armasm1;然后运行Embest IDE集成开发环境,选择File→New Workspace菜单项,弹出一个对话框,输入工程名armasm1a/armasmlb等相关内容;最后单击OK按钮,将创建一个新工程,并同时创建一个与工程名相同的工作区。

此时在工作区窗口将能打开该工作区和工程。

2.建立源文件。

选择File→New菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。

编辑完后,保存文件armasmla. s。

1)armasmla. s源程序:/* armasm1a.s */.EQU X, 45 /*定义变量X,并赋值为45*/.EQU Y, 64 /*定义变量Y,并赋值为64*/.EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/.GLOBAL _START.TEXT_START: /*程序代码开始标志*/MOV SP, #STACK_TOPMOV R0, #X /*X的值放入R0*/STR R0, [SP] /*R0的值保存到堆栈*/MOV R0, #Y /*Y的值放入R0*/LDR R1, [SP] /*取堆栈中的数到R1*/ADD R0, R0, R1STR R0, [SP]STOP: B STOP /*程序结束,进入死循环*/.END2).使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。

具体实验参考程序如下:/* armasm1b.s */.EQU X, 45 /*定义变量X,并赋值为45*/.EQU Y, 64 /*定义变量Y,并赋值为64*/.EQU Z, 87 /*定义变量Z,并赋值为87*/.EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/.GLOBAL _START.TEXT_START: /*程序代码开始标志*/MOV R0, #X /*X的值放入R0*/MOV R0, R0, LSL #8 /*R0的值乘以2的8次方*/MOV R1, #Y /*Y的值放入R1*/ADD R2, R0, R1, LSR #1 /*R1的值除以2再加上R0后的值放入R2*/MOV SP, #0X1000STR R2, [SP]MOV R0, #Z /*Z的值放入R0*/AND R0, R0, #0XFF /*取R0的低八位*/MOV R1, #Y /*Y的值放入R1*/ADD R2, R0, R1, LSR #1 /*R1的值除以2再加上R0后的值放入R2*/LDR R0, [SP] /*Y的值放入R1*/MOV R1, #0X01ORR R0, R0, R1MOV R1, R2 /*Y的值放入R1*/ADD R2, R0, R1, LSR #1 /*R1的值除以2加上R0的值放入R2*/ STOP: B STOP /*程序结束,进入死循环*/.END3.添加源文件。

选择Project→Add To Project→File项或单击工程管理窗口中的相应右键快捷菜单命令,打开文件选择对话框,在工程目录下选择刚才建立的源文件armasmla.s/armasmlb.s。

4.基本设置。

选择Project→Settings…菜单项或按下快捷键Alt + F7,弹出工程设置对话框;在工程设置对话框中选择Processor属性页,按照使用要求对目标板所用处理器进行设置。

5.生成目标代码。

选择Build→Build armasmla菜单项或按下快捷键F7,生成目标代码。

此步骤也可以通过单击工具栏上相应按钮来完成。

6.调试设置。

选择选择Project→Settings…菜单项或按下快捷键Alt + F7,弹出工程设置对话框;在工程设置对话框中,若选择Remote页面则对调试设备模块进行设置;若选择Debug 页面则对调试模块进行设置。

7.选择Debug→Remote Connect连接软件仿真器,执行Download命令下载程序,并打开寄存器窗口。

8.打开存储器窗口,观察地址0x8000~0x801F的内容以及地址0xFF0~0xFFF的内容。

9.单步执行程序,并观察和记录寄存器与存储器值的变化。

五、实验报告执行-START前将45赋值给X,将64赋值给Y,并定义栈顶为0X00001000, 执行MOV sp, #stack_top后sp:0x00001000,执行 MOV r0, #x后r0:0x0000002d执行MOV r0, #y 后r0:0x00000040LDR r1, [sp] 取堆栈中的数到R1ADD r0, r0, r1 执行前r0:0x0000002d r1:0x00000040执行后:r0:0x0000006d最终实现了两个数字的相加。

六.实验总结本次实验主要是熟悉ARM汇编指令和学习使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。

本次为验证试验,通过本次实验掌握了基本的汇编语句,实现了基本的加法运算和基本的数学/逻辑运算。

在实验过程中记录了在但不运行时有关寄存器和存储器的值,经过查询分析,查看寄存器和存储器的值,检查结果是否正确;通过这次实验熟练掌握了软件的操作和使用,学到了很多。

实验二 ARM汇编指令使用实验——存储区数据块的传送一、实验目的1.熟悉ARM ADS 1.2 / Embest IDE for ARM 开发环境及ARM软件模拟器的使用。

2.通过实验掌握使用LDM/STM、B、BL等指令完成较为复杂的存储区访问和分支程序的方法,学习使用条件码,加强对CPSR的认识。

二、实验设备1.硬件:PC机。

2.软件:ADS 1.2 / Embest IDE 200X集成开发环境。

三、实验内容设计并调试一个存储区数据块的传送程序,具体数据块的传送要求为:将数据从源数据区snum复制到目标数据区dnum,数据的个数num假定为20,复制时以8个字为单位进行,对于最后不足8个字的数据,以字为单位进行复制。

用ARM汇编语言设计该数据块复制程序的设计思想如下:先将源数据区的起始地址、目标数据区的起始地址以及数据个数赋给选定的寄存器R0、R1、R2,再根据每次批量/单个复制数据的个数R3确定用于数据复制的中间寄存器R4~R11,之后先将源数据区的若干个数据批量装载到中间寄存器中,再将中间寄存器的数据批量存储到目的数据存储区,随后进行数据是否复制完毕的判断,若未复制完毕,则修改有关操作数据地址,并重复前面的数据复制操作,否则,终止操作,程序结束。

四、实验操作步骤1.新建工程。

先建立一个实验文件夹,如E\ARMSY\armasm2;然后运行Embest IDE 集成开发环境,选择File→New Workspace菜单项,弹出一个对话框,输入工程名ARMcode 等相关内容;最后单击OK按钮,将创建一个新工程,同时创建一个与工程名相同的工作区。

此时在工作区窗口将打开该工作区和工程。

2.建立源文件。

选择File→New菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。

编辑完后,保存文件armasm2.s。

.GLOBAL _START.TEXT.EQU NUM, 20 /*定义需要复制的字数据个数NUM为20*/_START:LDR R0, =SRC /*将R0指向源数据区的起始地址*/LDR R1, =DST /*将R1指向源数据区的起始地址*/MOV R2, #NUM /*将需要复制的字数据个数存放在R2中*/MOV SP, #0X400 /*将堆栈指针SP指向#0X400*/ BLKCOPY:MOVS R3, R2, LSR #3 /*R2的值除以8的结果存入R3*/BEQ COPYWORDS /*若Z=1,则转COPYWORDS*/STMFD SP!, {R4-R11} /*将R4~R11的内容存入堆栈进行保护*/ OCTCOPY:LDMIA R0!, {R4-R11} /*从源数据区装载8个字数据到R4~R11*/ STMIA R1!, {R4-R11} /*将R4~R11中的8个字数据存入目的数据区*/SUBS R3, R3, #1 /*每复制一次R3减1*/BNE OCTCOPY /*若R3不等于0,则转移到OCTCOPY*/LDMFD SP!, {R4-R11} /*将堆栈内容恢复到R4~R11*/COPYWORDS:ANDS R2, R2, #7 /*计算需复制的奇数个字的个数*/BEQ STOP /*若R2=0则停止*/WORDCOPY:LDR R3, [R0], #4 /*将源数据区的一个字装载至R3*/STR R3, [R1], #4 /*将R3中的数据存到目的数据区*/SUBS R2, R2, #1 /*数据传输控制计数器减1*/BNE WORDCOPY /*若R2不等于0,则转移到WORDCOPY*/STOP:B STOP.LTORGSRC: /*源数据区起始地址标号*/.LONG 1, 2,3 ,4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4DST: /*目的数据区起始地址标号*/.LONG 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 .END3.添加源文件。

选择Project→Add To Project→File项,或单击工程管理窗口中的相应右键快捷菜单命令,打开文件选择对话框,在工程目录下选择刚才建立的源文件armasm2.s。

4.基本设置。

选择Project→Settings…菜单项或按下快捷键Alt+F7,弹出工程设置对话框;然后在工程设置对话框中,选择Processor属性页,对目标板所用处理器进行设置。

相关文档
最新文档