利用跳转表实现程序分支_第1页
利用跳转表实现程序分支_第2页
利用跳转表实现程序分支_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 实验一 利用跳转表实现程序分支一、实验目的:1、 熟悉 ADS1.2 开发环境,掌握基本的调试方法;2、 熟悉 ARM9 汇编语言的程序设计方法;3、 熟悉 ARM9 的基本语法。二、实验内容利用跳转表实现具有下述功能的汇编程序:(1)当 r0 为 1 时,调用子程序 CASE1,完成 r1 加 r2 把结果放入 r3 的计算;(2)当 r0 为 2 时,调用子程序 CASE2,完成 r1 减 r2 把结果放入 r3 的计算;(3)当 r0 为 3 时,调用子程序 CASE3,完成 r1 与 r2 把结果放入 r3 的计算;(4)否则,完成 r1 或 r2 把结果放入 r3 的计算。三、实验

2、步骤:安装完 ADS1.2 后在其安装目录下存在如下两个文件,即 Codewarrior for ARM Developer Suit和 AXD Debugger,这两个文件分别是代码编辑文件和调试文件,在实验中我们主要使用这两个文件。运行 ARM Developer Suite v1.2 中的 Codewarrior for ARM Developer Suit 文件2、选择 File-New 将打开新建文件窗口,如图 2 所示。选择 Project 标签新建一个 ARM 可执行的映像文件(ARM Executable Image),并填入适当的项目名(Project name)及选择合适的

3、存放项目的目录(Location),最后点击确定。3、新建一个*.s 文件用于存放我们的实验程序,其建立步骤如下。点 File-New 将打开新建文件窗口,在新打开的窗口中选择 Flie 标签,输入文件名。也可以通过工具栏中的按钮实现上述功能。值得注意的是由于在这里我们使用汇编语言编制程序因此文件扩展名一定要存为*.s。4、输入所设的汇编语言并保存,注意扩展名必须为*.s。在输入设计文件时需要注意以下几点:(1)标号必须顶格书写,而指令、伪指令和指示符前必须至少空一格空格,为了使程序格式清晰,通常使用标号必须顶格书写,而指令、伪指令和指示符前必须至少空一格空格,为了使程序格式清晰,通常使用 T

4、ab 键;(2)指令、伪指令和指示符大小写均可;(3)注释为英文状态下的“;”。5、接下来开始调试所设计的文件,调试文件主要在项目窗口中进行。(1)添加文件到项目。将鼠标指在项目窗口的空白处,点击右键,选择 Add Flie将设计文件添加到项目中。(2)指定调试环境。选择 DebugRel Settings 打开调试环境设置窗口,在这里可以进行相应的设置,我们只需将 Language Settings 中的 ARM Assembler 中的 Target 选为 ARM920T 即可(系统默认为 ARM7TDMI,若只为了实现软件仿真,也可以不改变微处理器,因为 ARM920T 与ARM7TDM

5、I 均使用同一套 ARM 指令集)。(3)汇编文件。点击 Make 按钮汇编我们设计的文件,并修正错误。当没有错误时就可以进行调试了。(4)调试文件。在这里我们使用 ADS1.2 中的 AXD Debugger 进行程序调试,可以通过选择Debug 按钮调用 AXD Debugger,其界面如图 4 所示(若 AXD 未能打开所调试的程序,可以选择 AXD Debugger 中的 Options|Target 配置处理器)。4、 实验的源程序;利用跳转表实现具有下述功能的程序;if r0=1 then CALL CASE1 (r3=r1+r2);else if r0=2 then CALL C

6、ASE2 (r3=r1-r2);else if r0=3 then CALL CASE3 (r3=r1&r2);else DEFAULT (r3=r1|r2);AREA JumpTest,CODE,READONLY ; 定义代码段CODE32 ; 设置为 arm 指令集ENTRY ; 程序入口startMOV r0, #1 ; 初始化程序中使用的寄存器MOV r1, #3MOV r2, #2ADR r4, JumpTable ; 将跳转表地址送给 r4CMP r0, #1 ; if r0=1 then CALL CASE1MOVEQ r3, #0LDREQ pc, r4,r3,LSL

7、#2CMP r0, #2 ; if r0=2 then CALL CASE2- 5 -MOVEQ r3, #1LDREQ pc, r4,r3,LSL #2CMP r0, #3 ; if r0=3 then CALL CASE3MOVEQ r3, #2LDREQ pc, r4,r3,LSL #2DEFAULT ; otherwise CALL DEFSULTORR r0, r1, r2SWITCHENDMOV r0, #0x18 ; 调用软中断 返回操作系统LDR r1, =0x20026SWI 0x123456JumpTable ; 定义跳转表DCD CASE1DCD CASE2DCD CASE3CASE1 ; 子程序 1ADD r3, r1, r2B SWITCHENDCASE2 ; 子程序 2SUB r3, r1, r2B SWITCHENDCASE3 ; 子程序 3AND r3, r1, r2B SWITCHENDEND五、实验体会 通过这次实验,让我初步了解了嵌入式开发的环境建立,熟悉ARM9的基本语法和嵌入式系统的操作,对课上所学的东西有了进一步的认。通过和同学的讨论

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论