《北京联合大学计算机嵌入式实验报告123》由会员分享,可在线阅读,更多相关《北京联合大学计算机嵌入式实验报告123(19页珍藏版)》请在金锄头文库上搜索。
1、北京联合大学嵌入式系统设计与应用实验报告学院:信息学院专业:计算机科学与技术课程:嵌入式系统班级:姓名:学号:2015 年10 月14 日目录实验二汇编指令实验 .1 一、实验目的和任务 .1 二、实验原理 .1 三、程序代码和结果分析 .2 四、实验总结 .6 实验三C 语言和 ARM 汇编混合编程.7 一、实验目的和任务 .7 二、实验原理 .7 三、程序代码和结果分析 .7 四、实验总结 .12 实验一ADS1.2 集成开发环境实验 .13 一、实验目的和任务 .13 二、 实验原理 .13 三、程序代码和分析 .13 四、实验总结 .17 1 实验二汇编指令实验一、实验目的和任务目的:
2、(1)了解 ADS 1.2 集成开发环境及ARMulator 软件仿真。(2)掌握 ARM7TDMI 汇编指令的用法,并能编写简单的汇编程序。(3)掌握指令的条件执行和使用LDR/STR 指令完成存储器的访问。任务:(1)使用 LDR 指令读取0x40003100 上的数据,将数据加1,若结果小于10 则使用 STR 指令把结果写回原地址,若结果大于等于10,则把 0 写回原地址。然后再次读取0x40003100 上的数据,将数据加 1,判断结果是否小于10, 周而复此循环。(2)求从1 开始连续10 个奇数之和 ,并将结果存放在名字为SUM 的字存储单元中。 编写ARM 汇编程序并加注释,调
3、试并记录运行结果。程序要定义数据段存放结果二、实验原理ARM 指令格式S , , operand2 opcode: 指令助记符,如ADD, LDR, STR cond: 执行条件,如NE, EQ S: 是否影响 CPSR的值Rd: 目标寄存器Rn: 第一操作数寄存器operand2: 第二操作数条件执行当处理器工作在ARM 状态时, 几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行,当指令的执行条件满足时,指令被执行,否则忽略条件码每一条 ARM 指令包含4 位的条件码,位于指令码的最高4 位31:28 。条件码共有15 种,每种条件码可用两个字符表示,这两个字符可添加在指
4、令助记符的后面实验中用到的ARM 指令集1.跳转指令在 ARM 程序中有两种方法可以实现程序的跳转,直接向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转跳转指令包括以下4 条指令B 跳转指令2 BL 带返回的跳转指令BX 带状态切换的跳转指令BLX 带返回和状态切换的跳转指令2.数据处理指令数据处理指令可分为数据传送指令、比较指令和算术逻辑运算指令。数据传送指令进行数据的传输。比较指令不保存运算结果,只更新CPSR中相应的条件标志位。算术逻辑运算指令完成常用的算术与逻辑的运算。该类指令不但将运算结果保存在目的寄存器中,同时更新CPSR中的相应条件标志位。3.加载 /存储指
5、令ARM 微处理器支持加载/存储指令用于在寄存器和存储器之间传送数据。常用的加载存储指令如下:LDR 字数据加载指令LDRB 字节数据加载指令LDRH 半字数据加载指令STR 字数据存储指令STRB 字节数据存储指令STRH 半字数据存储指令LDM 批量数据加载指令STM 批量数据存储指令4.异常指令ARM 微处理器所支持的异常指令: SWI 软件中断指令SWI 0x0 ; 调用 0 号软中断SWI 0x12 ; 调用 12 号软中断BKPT (break point )断点中断指令BKPT 0x00ff 产生软件断点中断,用于程序的调试三、程序代码和结果分析任务( 1)COUNT EQU 0
6、x40003100 AREA Example2,CODE,READONLY ;定义代码段,名字为Example2,属性为 READONLY ENTRY ;程序入口CODE32 ;32 位 ARM 指令START LDR R1,=COUNT ;R1=0x40003100 MOV R0,#0 ;R0=0 STR R0,R1 ;将地址单元40003100 的内容改为0 3 LOOP LDR R1,=COUNT ;R1=0x40003000 LDR R0,R1 ;R1=0x40003000 存储单元的内容ADD R0,R0,#1 ;R0=R0+1 CMP R0,#10 ;比较 R0和 10 MOVHI
7、 R0,#0 ;若 R010,R0=0 STR R0,R1 ;R0 的内容存储到地址为0x40003000 的存储单元B LOOP ;跳转指令END 程序还未运行时,地址0x40003100 的存储单元的内容为10 第一次循环前,R1的内容为存储单元地址,R0=0, STR RO,R1 执行后 0x40003000 的内容变为0 4 第一次循环,R1=0x40003000,为存储单元地址,该单元内容加载到R0,R0=0,R0=R0+1=1 ,R0 的内容小于 10,故 R0 不置零,将R0的值写回原地址,值为01 第二次循环完后,R0 的值为 2,存储单元内容为02,继续循环。5 直到循环次数
8、大于10,MOVHI R0,#0,R0=0,将存储单元内容置为00,如上图,然后在继续无限循环上述过程。任务( 2)AREA BLOCKDATA,DATA,READWRITE SUM DCD 0 ;分配一个连续的字存储单元,名字为SUM,赋初值为0 AREA Example,CODE,READONLY ENTRY CODE32 MOV R0,#10 ;R0=10 存放循环次数MOV R1,#0 ;R1=0 存放累加和MOV R2,#1 ;第一个加数为1 NEXT ADD R1,R1,R2 ;R1=R1+R2 ADD R2,R2,#2 ;加数加 2 SUBS R0,R0,#1 ;执行个数减1 B
9、NE NEXT ;不为 0 跳转 NEXT LDR R4,=SUM ;获取 SUM 的地址,存放在R4 中STR R1,R4 ;将 R1 中的结果存放到6 MOV R0,#0x18 LDR R1,=0x20026 SWI 0x123456 END 执行结束后,R4中存放的是结果所在的地址,根据R4中的地址查询存储单元,结果为64,正确。四、实验总结本次实验编写了简单的汇编程序指令,对程序进行编译连接,最终生成执行文件,对程序进行单步执行,可看到在每一步执行过程中,寄存器内容的变化情况,和程序所分得的地址单元。通过本次试验,回顾了在学习组成原理和微机原理时候使用的集成开发软件使用方法,并了解ADS 1.2 集成开发环境,了解了汇编程序的开发过程,掌握了ARM7TDMI 汇编指令的用法,并能编写简单的汇编程序,学会了指令的条件执行和使用LDR/STR 指令完成存储器的访问。能够在 ADS环境下进行编辑、编译、连接程序。但对于DOS环境下的汇编程序的编辑、编译、连接使用还不是很熟悉。7 实验三C 语言和 ARM 汇编混合编程一、实验目的和任务目的:掌握 C语言和 ARM汇编混合编程方法。任务: C语言和汇编混合编程,实现字符串拷贝。二、实验原理ARM 体系结构