实验三(ARM编程环境的熟悉及寻址方式实验)

合集下载

ARM培训实验指导书(第一版)

ARM培训实验指导书(第一版)

NXP 大学计划指定民大实验教材ARM与嵌入式技术版本:2008年1月第一版目录实验一熟悉Embest IDE集成开发环境 (1)实验二ARM汇编指令实验(1) (4)实验三ARM汇编指令实验(2) (9)实验三存储器实验.................................................................................... 错误!未定义书签。

实验四I/O接口实验............................................................................... 错误!未定义书签。

实验五中断实验........................................................................................ 错误!未定义书签。

实验六串口通信实验................................................................................ 错误!未定义书签。

实验七数码管(LED)显示实验 ............................................................ 错误!未定义书签。

实验八RTC及数码管显示实验(设计性实验).................................... 错误!未定义书签。

实验九液晶显示实验................................................................................ 错误!未定义书签。

实验十键盘控制实验................................................................................ 错误!未定义书签。

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 后缀文件,如图五,图六,图七。

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

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

实验三基于ARM的C语言程序设计一、实验目的了解ARM C语言的基本框架,学会使用ARM的C语言编程。

二、实验设备标准硬件。

三、实验内容用C语言编写一个“用通用串口UART发送一组数据”的应用程序。

四、实验原理(1)汇编程序调用C程序汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。

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

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

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

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

在C语言环境下开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序跳转到C语言下的主程序,然后,执行C程序。

在C环境下读写硬件的寄存器,一般是通过宏调用,在每个项目文件的Startup2410\INC目录下都有2410addr.h头文件,里面定义了所有关于2410的硬件寄存器的宏,通过对宏的读写,就能操作2410的硬件。

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

下面是一个简单的小例子,在汇编中嵌套一个C程序IMPORT Main;//用IMPORT声明要引入一个C函数MainAREA Init,CODE,READONLY;ENTRYLDR R0,=0x01d00000LDR R1,=0x245STR R1,[R0];把0x245放到地址0X01D00000BL Main;跳转到Main()函数END;标识汇编程序结束以上是一个简单的程序,先寄存器初始化,然后跳转到Main()函数标识的C/C++代码处,执行主要任务,此处的Main是声明的C语言中的Main()函数。

五、实验步骤1.打开ADS1.2开发环境,打开\基础实验\实验六\C.mcp项目文件,然后进行compile和make生成*.axf文件。

2.编译通过后,进入ADS1.2调试界面,加载\基础实验\实验六\C_Data\Debug 中的映象文件程序映像C.axf。

实验三 指令与寻址方式认知实验(Keil)

实验三  指令与寻址方式认知实验(Keil)

实验三指令与寻址方式认知实验一、实验目的1.了解单片机基本指令及其寻址方式;2.掌握在µVision环境中查看指令操作结果的技巧。

二、实验仪器和设备Keil软件;THKSCM-2综合实验装置;三、实验原理及实验内容1.示例及相关设置(1)建立一个文件夹:lx31。

(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx31.asm文件名存盘到lx31文件夹中。

ORG 0000HMAIN:MOV R7,#16MOV A,#00HMOV R0,#30HLP:MOV @R0,AINC R0INC ADJNZ R7,LPSJMP $END(3)在lx31文件夹下建立新工程,以文件名lx31存盘(工程的扩展名系统会自动添加)。

(4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置:○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。

○2晶振频率设为11.0592MHz。

○3Output标签下的Create HEX File前小框中要打钩。

○4在Debug标签选择Use Simulator(软件模拟)。

(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。

利用单步、执行到光标处两种方法运行程序,观察程序运行的结果。

(6)分析程序的功能,研究观察以下指令的寻址方式及其操作效果。

2.示例及相关设置(1)建立一个文件夹:lx32。

(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx32.asm文件名存盘到lx32文件夹中。

ORG 0000HMOV R0,#20HMOV R1,#22HMOV A,@R0ADD A,@R1MOV 24H,AINC R0INC R1MOV A,@R0ADDC A,@R1MOV 25H,ASJMP $END(3)在lx32文件夹下建立新工程,以文件名lx32存盘(工程的扩展名系统会自动添加)。

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灯进行控制。

实验三 寻址方式与基本指令实验

实验三  寻址方式与基本指令实验

实验三寻址方式与基本指令实验一、实验目的1、熟悉51单片机的各种寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。

2、初步掌握单片机汇编语言的设计和调试的基本方法方法。

3、熟悉DVCC模拟仿真系统的调试工具的使用方法二、实验内容1、查看程序代码在单片机内部存在的位置和形式。

2、熟练应用MOV指令、MOVX指令、MOVC指令,实现将数据在51单片机内部寄存器空间,RAM空间,以及外部RAM空间之间的转移。

3、了解堆栈的设置和应用,以及堆栈指针SP的变化4、懂得在程序区域设置数据表三、实验步骤1、编写如下参考程序,编译、模拟调试,并回答下列问题:MOV A, #30H ; 将立即数30H 送到累加器 AMOV R0, #40HMOV @R0, A 该指令语句中,目的操作数的寻址方式为;MOV R1, 40H 运行到此,R1 的值为;END2、请在1题基础上,增加适当的语句,使地址42H的内部数据存储器单元,赋值为30。

3、下列程序实现把10、11、12 三个数分别放在外部数据存储地址为1000H、1001H、1002H 存储单元处。

请填写指令,实现将1000H、1001H、1002H存储单元中的数值分别存储在R1、R2、R3中。

(请编译、调试、运行)MOV A, #10MOV DPTR , #1000H ;指定外部数据存储器地址为1000HMOV @DPTR , AINC A ;累加器A 数值加1INC DPTR ;DPTR 地址值加1=1001HMOV @DPTR , AINC AINC DPTRMOV @DPTR , A..................END4、堆栈操作,执行如下程序,回答下列问题MOV SP , 30H ;执行到此,SP= HMOV DPL,#12HMOV B, #34HPUSH DPL;执行到此,SP= HPUSH B ;执行到此,SP= HPOP DPL ;执行到此,SP= H, DPL = HPOP B ;执行到此,SP= H , B= HEND5、请在程序存储器地址为1000H开始的区域,依次存放如下数据:(1000H)= 0AH(1001H)= 0BH(1002H)= 0CH(1003H)= 0DH(1004H)= 0EH(1005H)= 0FH设计一个查表程序:使A=3时,查得数据0DH 回存到A.四、思考题:1、MOVC 指令操作数的寻址方式有几种?操作数实在程序存储区还是数据存储区?2、分析堆栈空间“先入后出”的使用特点,试着回答其在程序编写中的作用?。

ARM体系结构与编程实验报告

ARM体系结构与编程实验报告

ARM体系结构与编程实验专业名称:计算机科学与技术班级:17计算机科学与技术学生姓名:学号:实验二GPIO实验一、实验目的:1、熟悉GPIO程序设计的基本流程;2、掌握在proteus中创建工程及编写、编译和运行汇编语言程序的方法;3、熟悉keil中各种调试功能。

二、实验内容:ARM的P0.1口接有一个控制开关,P0.0口上接有一个LED,用C语言编写程序,实现当开关闭合时LED亮,当开关打开时LED灭。

三、源代码#include <LPC21xx.H>#define P0_1 0x02;unsigned volatile long i;for(i=0;i<10000;i++);}int main(void) {int p01State;PINSEL0 = 0;IO0DIR = 0x000001;IO0SET = 0x000001;while (1) {p01State = IO0PIN&P0_1;if(p01State == 0){IO0CLR = 0x000001;delay();}else{IO0SET = 0x000001;delay();}}}四、实验结果实验三外部中断实验一、实验目的:1、掌握外部中断程序的编写;2、熟悉外部中断的工作原理;3、熟悉Proteus、keil中各种调试功能。

二、实验内容:在ARM的P0.14接口上接有一个按钮开关,开关的另一端接地,在P0.25接一个LED,引脚设置时连接EINT1功能。

用C语言编写程序,实现当按下按钮开关时触发外部中断,使LED快速闪烁。

三、源代码#include <LPC21XX.H>#define LEDCON 0x02000000typedef unsigned int uint32;void IRQ_Eint1(void) __attribute__ ((interrupt));uint32 times = 100;void IRQ_Eint1(void){times = 5;while((EXTINT&0x02)!=0){EXTINT=0x02;}VICVectAddr=0;}void delay100(void) {unsigned volatile long i,j;for(i=0;i<10000;i++)for(j=0;j<times;j++);if(times > 100){times--;}else if(times <100){times++;}}int main(void){IO0DIR = LEDCON;PINSEL0 = 0x20000000;PINSEL1 = 0x00000000;VICIntSelect=0;VICIntEnable=0x00008000;VICVectCntl1=0x2F;VICVectAddr1=(int)IRQ_Eint1;EXTINT=0x07;while (1) {IO0CLR = LEDCON;delay100();IO0SET = LEDCON;delay100();}}四、实验结果实验五定时器实验一、实验目的:1、熟悉定时器程工作原理;2、掌握定时器程序设计的基本流程;3、熟悉Proteus、keil中各种调试功能。

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实验报告)

实验三3.1 实验目的初步学会使用Embest IDE for ARM 开发环境及ARM 软件模拟器;通过实验掌握简单ARM 汇编指令的使用方法。

实验内容熟悉开发环境的使用并使用ldr/str,mov 等指令访问寄存器或存储单元。

使用add/sub/lsl/lsr/and/orr 等指令,完成基本数学/逻辑运算。

3.2实验目的通过实验掌握使用ldm/stm,b,bl 等指令完成较为复杂的存储区访问和程序分支,学习使用条件码,加强对CPSR 的认识。

实验内容熟悉开发环境的使用并完成一块存储区的拷贝;完成分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。

3.3 实验目的通过实验掌握ARM 处理器16 位Thumb 汇编指令的使用方法。

实验内容使用THUMB 汇编语言,完成基本的reg/mem 访问,以及简单的算术/逻辑运算;使用THUMB 汇编语言,完成较为复杂的程序分支,push/pop,领会立即数大小的限制,并体会ARM 与THUMB 的区别。

3.4实验目的通过实验掌握学会使用msr/mrs 指令实现ARM 处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU 结构的理解;通过实验掌握ld 中如何使用命令行指定代码段起始地址。

实验内容通过ARM 汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握ARM 不同模式的进入与退出。

3.5 实验目的学会使用Embest IDE 编写简单的C 语言程序并进行调试;学会编写和使用命令脚本文件;掌握通过memory/register/watch/variable 窗口分析判断运行结果。

实验内容利用命令脚本初始化栈指针,并使用c 语言完成延时函数。

3.6 实验目的掌握建立基本完整的ARM 工程,包含启动代码,连接脚本等;了解ARM7 启动过程,学会使用Embest IDE 编写简单的C 语言程序和汇编启动代码并进行调试;掌握链接脚本的作用;掌握如何指定代码入口地址与入口点;掌握通过memory/register/watch/variable 窗口分析判断结果。

arm实验报告

arm实验报告

实验一.GPIO输出实验一.实验目的(1)掌握QuickARM专用工程模板的使用。

(2)掌握EasyJTAG仿真器的安装和使用。

(3)能够在SmartSOPC教学实验开发平台上运行第一个程序(无操作系统)。

(4)熟悉LPC2000系列ARM7微控制器的GPIO控制。

二.实验原理1.硬件原理(1)连接EasyJTAG仿真器和QuickARM核心板。

将EasyJTAG仿真器的25针接口通过并口延长线与PC机的并口相连,将EasyJTAG仿真器的20针连接电缆接到QuickARM核心板的J3上,然后将核心板插到SmartSOPC实验箱上。

打开实验箱电源。

(2)EasyJTAG仿真器的安装和应用:参考第3.6节的内容。

(3)添加工程模板:参考第3.8.3节的内容。

(4)用工程模板建立第一个工程:使用ARM Executable Image for QuickARM工程模板建立工程。

建立源文件并加入到工程,然后编写程序代码:编译连接工程,若有错误,则修改程序,再次编译。

(5)仿真调试第一个工程:正确设置SmartSOPC教学实验开发平台上的跳线;启动AXD进行仿真调试。

2.软件控制#include "config.h"#define BEEPCON 0x00000080 // P0.7引脚控制蜂鸣器//名称:DelayNS//功能:延时函数void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--){for(i=0; i<50; i++);}}//名称:main//功能:控制蜂鸣器叫//调试说明:将SmartSOPC教学实验开发平台上的A6区的JP7短接,把B2区的JP6的BEEP 短接起来。

int main(void){PINSEL0 = 0x00000000; // 设置管脚连接GPIOIO0DIR = BEEPCON; // 设置I/O为输出while(1){ IO0SET = BEEPCON; // BEEPCON = 1DelayNS(2);IO0CLR = BEEPCON; // BEEPCON = 0DelayNS(2);}}三.步骤结果(1)连接EasyJTAG仿真器和QuickARM核心板,将核心板插到SmartSOPC教学实验开发平台,然后安装EasyJTAG仿真器的驱动程序(若已经安装过,此步省略);(2)为ADS1.2增加QuickARM专用工程模板(若已增加过,此步省略);(3)启动ADS 1.2,使用ARM Executable Image for QuickARM工程模板建立一个工程BeepCon_C;(4)打开main.c文件编写实验程序;(5)选用DebugInExram生成目标,然后编译链接工程;(6)将SmartSOPC教学实验开发平台上的A6区的JP7短接,把B2区的JP6的BEEP短接起来。

ARM实验三 基于ARM的汇编编程实验

ARM实验三 基于ARM的汇编编程实验

实验三基于ARM的汇编编程实验一,实验目的1.熟悉ADS1.2软件开发环境;2.掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序;3.掌握指令的条件执行和使用LDR/STR指令完成存储器的访问。

4.掌握ARM乘法指令的使用方法;5.了解子程序编写及调用。

二,实验设备硬件:PC机一台。

软件:Windows98/XP/2000系统,ADS1.2集成开发环境。

三,实验内容实验内容一:1.使用LDR指令读取0x30003100上的数据,将数据加1,若结果小于10,则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址。

2.使用ADS1.2软件仿真,单步,全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0,R1的值,打开存储器观察窗口(Memory)监视0x30003100上的值。

实验内容二:1.使用STMFD/LDMFD,MUL指令编写一个整数乘方的子程序,然后使用BL 指令调用子程序计算X n的值。

2.X n= X*X*X …… *X,其中相乘的X的个数为n个。

先将X的值装入R0和R1,使用寄存器R2进行计数,循环n-1次R0=R0*R1,运算结果就保存在R0中。

(不考虑溢出问题)3.注意:若n=0,则运算结果直接赋1;若n=1,则运算结果直接赋X。

四,实验步骤实验内容一的步骤:1.启动ADS1.2,使用ARM Executable Image工程模板建立一个工程arm1.mcp。

如图5.1所示。

图5.1 新建工程对话框2.建立汇编源文件arm1.s,编写实验程序,然后添加到工程中。

如图5.2所示。

图5.2 新建汇编文件对话框3.设置工程连接地址RO Base为0x30000000,RW Base为0x30003000,设置调试口地址Image entry point为0x30000000。

图5.3 DebugRel Settings对话框4.编译连接工程,选择Project|Debug,启动AXD进行软件仿真调试。

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 汇编语言的基本语法和实现方法。

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

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

实验3_认识寻址方式

实验3_认识寻址方式

实验三 认识寻址方式3.1 实验目的(1)学习和掌握操作数的各种寻址方式(2)学习使用Debug创建和调试程序3.2 预备知识1.操作数和寻址方式操作数是指令或程序的主要处理对象。

在CPU的指令系统中,除了NOP空操作、HLT停机等少数指令外,大量的指令在执行过程中都会涉及到操作数。

所以,在指令中如何表达操作数或操作数所在的位置是正确运用汇编指令的一个重要因素。

寻址方式是指操作数或操作数存放位置的方法。

通俗地说,就是寻找操作数位置的方法。

操作数的各种寻址方式是用汇编语言程序解决问题的基础。

8086系统有7种寻址方式:立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、基址变址寻址方式和相对基址变址寻址方式。

在80386CPU之后,增加了比例变址寻址、基址比例变址寻址和相对基址比例变址寻址等3种方式。

除了立即寻址方式和寄存器寻址方式外,其余均为存储器寻址方式。

2. 传送指令MOV传送指令是使用最为频繁的指令,它相当于高级语言中的赋值语句。

指令格式:MOV Reg/Mem,Reg/Mem/ImmReg:寄存器;Mem:存储器;Imm:立即数。

它们可以是8位、16位或32位。

指令的功能是将源操作数SRC(第二操作数)的值传送给目的操作数DST(第一操作数)。

指令执行后,目的操作数被改变,而源操作数的值保持不变。

当存储单元作为操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。

3. 加法指令ADD指令格式:ADD Reg/Mem,Reg/Mem/Imm受影响的标志位:AF,CF,OF,PF,SF,ZF。

指令的功能是把源操作数的值加到目的操作数中。

4. 减法指令SUB指令格式:SUB Reg/Mem,Reg/Mem/Imm受影响的标志位:AF,CF,OF,PF,SF,ZF。

指令的功能是把源操作数与目的操作数的值相减并存到目的操作数中。

5.中断INT 20功能:终止当前程序的运行。

入口参数:CS=PSP的段地址出口参数:无3.3 实验内容一、寻址方式通过实验观察和分析在不同的寻址方式下存储单元逻辑地址的表示以及指令的执行结果。

(完整版)实验三C语言和ARM汇编混合编程指导书

(完整版)实验三C语言和ARM汇编混合编程指导书

实验三 C语言和ARM汇编混合编程1. 实验目的掌握C语言和ARM汇编混合编程方法。

2. 实验设备硬件: PC 机一台软件: Windows98/XP/2000 系统, ADS 1.2 集成开发环境3. 实验内容C语言和汇编混合编程, 实现字符串拷贝。

4. 实验预习要求熟悉常用ARM 指令。

了解ADS 工程编辑和AXD 调试方法。

5. 实验步骤(1)启动ADS 1.2, 使用ARM Executable Image 工程模板建立一个工程ProgramC1。

(2)建立源文件STR_COPY.S 和Test.c, 编写实验程序, 然后添加到工程中。

(3)设置工程链接地址RO Base 为0x40000000, RW Base 为0x40003000。

设置调试入口地址Image entry point 为0x40000000。

(4)编译链接工程, 选择【Project】->【Debug】, 启动AXD 进行软件仿真调试。

(5)在Test.c文件中的调用asm_strcpy(的代码处设置断点, 然后全速动行程序。

(6)程序在断点处停止。

使用Setp In 单步运行程序, 观察程序是否转到汇编程序STR_COPY.S。

判断程序的运算结果是否正确。

参考程序见程序清单3.1。

字符串拷贝函数代码见程序清单3.2。

6. 任务说明(一)调试运行“在C代码中嵌入汇编指令”程序, 并记录运行结果:(二)调试运行“汇编程序调用C函数”, 程序, 并记录运行结果:(三)在现有字符串拷贝(C 语言调用汇编程序)源程序的基础上, 实现int类型数据的拷贝。

1)要求:➢ 编写ARM汇编程序并加注释➢ 调试并记录运行结果2)提示: 源数字可用数组定义, 如int s[4];并对数组元素进行初始化,s[0]=1;s[1]=2;s[2]=3;s[4]=0,同样定义目标数组d[4]并初始化为0。

注: 一个int型数字占4个存储单元。

ARM原理与应用寻址方式实验报告

ARM原理与应用寻址方式实验报告

《ARM 原理与应用》实验报告、实验目的及要求?编一段程序在ADS1.2 IDS 环境下单步执行,观察相关内容(寄存器、内存单元、状态等),验证ARM 的各种寻址方式 ?调试汇编程序二、 实验设备(环境)及要求 硬件:PC 机;软件:VMware ,ADS1.2 IDE 三、 实验内容与步骤1:验证ARM 的寄存器和立即数寻址方式A:源代码O 0 0 0 0程序的功能是:首先将立即数 15,移到寄存器R0中,接着再把立即数8移到 寄存器R1中,然后使用寄存器寻址的方式将 RO 和R1中的数相减B :程序执行过程:实验序号:02实验项目名称:寻址方式CxaOOGOCOOAREA fCODE r READCN1YENTRYCODE32 STARTMOT R0r *15 MOV Rl P +8 SUB RQ P RO.R1 B START ENDCXQ00000D3 CxQOQOOQOO 0x800000001)使用立即数寻址的方式将15和8分别赋给寄存器R0和R1MJflTTDMI -甌tch□LLJ|lfi3|LLJ|im>|L ・]Liag| | | 凹 LEJ| m| 匾 Lil | 兰 |判 | ]孚 2)使用寄存器寻址的方法用 R0减去R1再将所得结果赋给R0ABH7TDMI - WatchTab 1 Tab 2 Tab 3 T : * 卜1 A5EA Hex_ouc r CODE r REA20MLY2 Ein^Y3 CODE324 STARI5 MOV R0r 41S £ MOV Rl r 4S 7 SUB RO r R0r Rl a |B SIART 9END2:验证ARM 的寄存器偏移寻址方式A:源代码。

:功能是首先分别给寄存器R0,R1,R2,R3 赋值为 2 再将R2寄存器的值左移三位所得结果赋给 R0( R2值不变),最后将R1减去R2 左移R3(寄存器内的值)位的值,并将结果赋给 R0 p]_|丨豊囤|国|副回瞩|m|國同|_|向回换回國|團|子| AEM7TDMI - ^atchTab 2 Tab 3 T J ITibI Kat chValueRC> R1 R2 R3 PC0x00000000 0x00000000 0x00000000 0x00000000 0x60000000C'PSR SPSROxOOOO00D3 oxoooaaaooAREArCODE, READONLYENTRYCO3E32START | MOVM0V MOV MOV MOV R0F #2 Rl r i2 52 R3r ^2R0F R2,LSL t3AN2S RlpRl^^SL S3B START ENDB:程序执行过程 1)先为各寄存器赋值2)然后执行对R2寄存器内的数进行移位并将所得结果赋给 R0,可以观察到R2内的值是不变的鬥L 制伽 |LO|t3|L£J| 匠 MI|Lh]|iyj| | |国 LLJ|EM| 回 巴1| 曰 | 性1| ►3:验证ARM 的寄存器间接寻址方式A:源代码0 0 0功能是:先给 R20寄存器用立即数寻址方式赋一个值,然后将对 R0 进行移位操作使它成为指向内存指定位置的地址,然后将该地址的内容提取到 R1寄存器中,接着进行交换操作1ILLJ | m | L!LI ] 1SI| EJU |1 1 旦 LLJ |m |nzl rzj |eafl IZEI |I2_rTab 1 1 Tab 2 ]Tab 3 T :J_L LWatch Val^eRO 0x00000002 R1O K OOODOOOJR20x00000002R3 01(00000002 PCO K SOOOOOIOCPSROXOQOOOOD35P5RQxQOOOOOOOAEM7TDMI -町忙h口二I |兰8 ■呻 AK17TDKI - C:\Docuacnl s and Settings1012AREA Hex_cut r CODE, READONLYENTRY CODE32 STARTMOV MOV MOVMOV I MOV R0r #2 Rl r #2R2,#2R5r|EZ O K OOOOOOOZRO”AND5 RlHRl f R2F LSL R3 B SIARTE!;ZTab 1 |r a b 2T4b 3 | T=jJj_ KatchValueR2 R3 0X00CQ0C02 0x00000002 CPSROx£OC'OOQ14 O K COOOOOD3 SF5ROxOOTOOCO :3)最后执行指令让寄存器:? ARI7TDII — C z \DocuMent s and Set t ing9101112AREA Hes_cut ffREA3O!7LYEUTRF C0DE32 STARTMOV MCV MOV MOV MCV R0f #2Rl r «2 R2f 42 R3R0AND 呂 Rl r Rl,R2R LSL R3B STARTENDR1内的数减去R2移位R3并将所得结果赋给R1,可以看出R2的值没有变T»b 1 |lab 2Tab 3 | I :/ ► WatchValueRO0x00000010 R1OxODOOnftOO R2 0x00000002 R3 0x00000002PC oxeoooooieCFSR0x40000003SP5R OK0OOOOCOOAEKTTDI1 - C: \Docu»ent s and Sett ings \HOAREA Hen^out , CODE , READONLYENIRYCODE32SIARIR0f #2MOV Rl,#2玄肝R2f #2MOV R3f 42ifOV HO.RZ.LSL #3AMDS R1,RI,R2H L5L R3 B STARTENDAKWTTDMI - ffatchOxOOOOOQlj R1OxC0000002 ARM7TDHI - fratchR0寄存器赋值为2,再将R0内的数左移3位使它指向内 存的一个指定地址#0x000000101 APIA Hex_out, CODE f READON1T2 EJnRY3 CODE324 START5 EOV RO, *26 MCfV RO f RO r LSL #3•+ 7LCR Rl, [RO]eSWPRl.Rl,[RO]9 B START 10END2)取出指定地址的值,将其放到 R1寄存器中■I *| |闖轴|国|因|迪團闖|囤画| |画直]昕固扈囘|AEMTTDWI —W a ,t chO ARI7 TDII 〕— C t YDocuBent s and Set t imTab 1Tab 2 1 Tab「町丨卜11A2EA K EX CLLt r ZO'E,?EADCNLyWatch Value 2HJIRY R0 0x00000010 3CODE32 R10)cE7FrODLO 4 STARIPC DxBDOOOOQC 5 MCV R □沖CPSR 0x00000003 €MCV RO^RO.LSL 43 5PSR0x000000007LDR Bl,[R0 J4 6 耐 R1#R1F[R0]9 B STJiRT10EtJD3)查看内存#0x00000010地址的内容(可以看到该内存地址的值与赋值给 R1的 值是一样的,证明上述操作成功)最后一个指令没什么意义,这里就不描述了。

ARM寻址方式实验

ARM寻址方式实验

ARM寻址方式实验一、实验目的1.理解各种寻址方式:立即数;寄存器;寄存器移位;寄存器间接寻址;变址寻址。

2.巩固和提高在ADS环境中用汇编语言进行程序设计的基本技能。

二、实验内容1.在ADS下建立工程,并配置开发环境。

2.创建一个汇编语言源程序,并添加到工程中,对其进行编辑、编译和链接。

3.使用AXD调试程序,观察各种寻址方式的功能。

三、实验步骤(exp4_1_1.s)实验程序段如下:AREA AddressingMode_1,CODE,READONLYENTRYMOV R5,#15 ;(1)MOV R2,#0xC ;(2)MOV R1,R5 ;(3)ADD R0,R1,R2 ;(4)ADD R0,R1,R2,LSR #1 ;(5)LDR R4,=0x90000 ;(6)STR R0,[R4] ;(7)STR R0,[R4,#4] ;(8)STR R0,[R4,#4]! ;(9)STR R0,[R4],#4 ;(10)HERE B HEREEND1.写出上述指令的寻址方式2.单步调试指令(1)到(10),观察相关寄存器和存储器的变化,并把结果填写到表格中(表格中☆标注的地方)。

3.第5条指令ADD R0,R1,R2,LSR #1中,请修改LSR为下面的几种内容,观察指令运行后的结果。

LSL:逻辑左移(Logical Shift Left)ASL:算术左移(Arithmetic Shift Left)LSR:逻辑右移(Logical Shift Right)ASR:算术右移(Arithmetic Shift Right)ROR:循环右移(Rotate Right)RRX:扩展为1的循环右移(Rotate Right eXtended by 1 place )4.第6条指令,如果修改为MOV R4,0x90000编译是否会出错?指令MOV R5,#0xFFF编译时是否会出错?。

ARM指令系统与编程—实验三

ARM指令系统与编程—实验三
ARM9指令与汇编程序实验
© 2008 Embedded
ARM9指令与汇编程序实验
• 实验目的 • 实验内容 • 开发环境配置 • 开发工具介绍 • 编写程序 • 编译、下载调试
© 2008 Embedded
实验目的
理解ARM9指令系统及编程基础
q 用汇编语言编程 q 用C编程 q C与汇编混合编程 q C程序入口函数的定义与调用 BLMain q ADS中编译、链接、调试(Debug)、运行环境配置 q 程序单步跟踪调试
AREA SCopy, CODE, READONLY
int main() { const char *srcstr = "First string - source"econd string - destination"; /* dststr is an array since we're going to change it */
printf("Before copying:\n"); printf(" '%s'\n '%s'\n",srcstr,dststr); strcopy(dststr,srcstr); printf("After copying:\n"); printf(" '%s'\n '%s'\n",srcstr,dststr); return 0; }
© 2008 Embedded
update address;
CMP r2, #0 ; check for zero
terminator
BNE strcopy ; keep going if not
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三ARM编程环境熟悉及寻址方式实验
注意:本实验在模拟环境下进行!!
一、实验目的:
1、进一步熟悉ARM的编程工具MDK;
2、深刻理解ARM汇编指令中标号的本质;
3、熟悉ARM寻址方式(寄存器寻址、寄存器间接寻址等);
二、实验步骤:
1、参照实验二的步骤,建立工程exp
2、设置工程、建立源文件
exp2.s并将其添加到工程,在exp2.s中输入如下代码(可复制):;广州大学华软软件学院
;文件名:exp2.s
;功能:
;作者:
;日期:
;修改:
area init,code,readonly
entry
ldr r0,=data1;将标号data1的值送给r0
ldr r1,=data2;
ldr r2,=data3
ldr r0,[r0]
ldr r1,[r1]
add r0,r0,r1
str r0,[r2]
b .;相当于while(1)
data1
dcd 12;定义一个字,初值为12
data2
dcd 13;定义一个字,初值为13
data3
dcd 0;定义一个字,初值为0
end
2、编译正确后调试(可参照实验二),注意Ro_Base设置为
0x30000000,点击下图菜单中的菜单项,调出内存单元观察窗口。

会弹出如下界面:
点击current,就会看到当前模式下的寄存器
按F10进行单步调试,同时观察寄存器中的变化;
反汇编界面:
出现如下界面:鼠标右键,如图选中,即可看到源代码的反汇编窗口。

我们发现data1代表的地址是0x30000020,data2代表的地址是0x30000024,data3代表的地址是0x30000028。

好,我们现在通过memory窗口来查看这些内存单元的内容:
在存储单元窗口输入0x30000020(如下图所示),观察存储单元中的值,是不是我们程序所运行的结果呢?。

相关文档
最新文档