第一范文网 - 专业文章范例文档资料分享平台

ARM实验指导书(WJQ-2010) - 图文

来源:用户分享 时间:2025/8/9 3:37:24 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

六、练习题

1. 仿真环境包括哪些内容?

2. 仿真手段除了介绍的方式外还有哪些?

实验三、CODE32/CODE16汇编指令与状态切换实验 一、实验目的

掌握ARM7TMDI 汇编指令的用法,并能编写简单的汇编程序;

学习ARM 微控制器的16 位Thumb 汇编指令的使用方法掌握指令的条件执行; 二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS开发软件一套。 三、实验内容

分别使用ARM、Thumb指令ADD,MOV,CMP,B 计算1+2+3+?+N 的值。 四、实验原理

ARM 处理器共有两种工作状态:

ARM 32 位,这种状态下执行字对准的ARM 指令。

Thumb 16 位,这种状态下执行半字对准的Thumb 指令。

注意:ARM和Thumb 之间状态的切换不影响处理器的模式或寄存器的内容。 ARM 处理器在两种工作状态之间可以切换。 (1) 进入Thumb 状态。当操作数寄存器的状态位0 为1 时,执行BX 指令进入Thumb 状态。如果处理器在Thumb 状态进入异常,则当从异常出来(IRQ、FIQ、Undef、Abort、SWI)返回时,自动切换到Thumb 状态。

(2)进入ARM 状态。当操作数寄存器的状态位0 为0 时,执行BX 指令进入ARM 状态。处理器进行异常处理(IRQ、FIQ、Undef、Abort、SWI)。在此情况下,把PC 放入异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM 状态。 Thumb 状态下的寄存器集是ARM 状态下寄存器集的子集。程序员可以直接访问8 个通用寄存器(R0-R7)、PC、SP、LR 和CPSP。每一种特权模式都有一组SP、LR 和SPSR。Thumb 状态的R0-R7 与ARM 状态的R0-R7 一致。 Thumb 状态的CPSR 和SPSR 与ARM 状态下的CPSR和SPSR 一致。

Thumb 状态的SP 映射到ARM 状态的R13。 Thumb 状态的LR 映射到ARM 状态的R14。 Thumb 状态的PC 映射到ARM 状态的PC(R15)。 本程序使用R0 保存结果,所以一开始就要初始化为0;循环执行R0=R0+R1,R1 为循环计数器,从1 开始计数,每一次循环R1 加1;当循环计数器R1 的值到达N 时,运算结束。

五、实验操作步骤

1.启动ADS1.2,使用ARM Execuatable Image 工程模板建立一个工程ASM_Project。 2.建立源文件test2.s,编写实验程序,然后添加到工程中(ARM指令和Thumb 指令实验的test2.s 程序源码分别见下清单) 。 3.设置工程链接地址RO Base 为0x8000

4.编译链接工程,选择【Project】->【Debug】,启动AXD进行调试。

5.打开寄存器窗口(Processor Registers),选择Current 项监视各寄存器的值。

6.单步运行程序,注意执行BX R0指令前后CPSR寄存器的T位。 说明:在寄存器窗口的CPSR 寄存器,大写字母的位表示该位为1,小写字母的位表示 该位为0(比如“T”表示T 位为1,“t”表示T 位为0)。

7.理解并掌握本实验原理及程序,完成练习题 。

六、实验参考程序

Thumb 汇编指令实验的参考程序代码清单 ;文件名:test.s

;功能:计算1+2+3+?+N 的值

N EQU 50 ; 定义N 的值为50 AREA testcode, CODE, READONLY ;声明代码段testcode ENTRY ;标识程序入口 CODE32 ; 声明32 位ARM 指令

ARM_CODE

LDR SP, =0x40003F00 ;设置堆栈指针 ADR R0,THUMB_CODE+1 BX R0 ;跳转并切换处理器状态 LTORG ;声明文字池

CODE16 ;声明16 位Thumb 指令

THUMB_CODE

LDR R0,=N ;设置子程序SUM_N 的入口参数 BL SUM_N ;调用子程序SUM_N B THUMB_CODE

;名称:SUM_N

;功能:计算1+2+3+?+N 的值 ;入口参数:R0( N 的值 ) ;出口参数:R0( 运算结果 ) SUM_N

PUSH {R1-R7,LR} ;寄存器入栈保护 MOVS R2,R0 ;将N 的值复制到R2,并影响条件码标志 BEQ SUM_END ;若N的值为0,则返回。 CMP R2,#1

BEQ SUM_END ;若N的值为1,则返回。 MOV R1,#1 ;初始化计算器R1=1 MOV R0, #0 ;初始化结果寄存器R0=0

SUM_L1 ADD R0,R1 ; R0=R0+R1

BCS SUM_ERR ;结果溢出,跳转到SUM_ERR CMP R1,R2 ;将计算器的值与N 比较 BHS SUM_END ;若计数器的值≥N,则运算结束 ADD R1,#1 B SUM_L1

SUM_ERR MOV R0, #0

SUM_END POP {R1-R7,PC} ;寄存器出栈,返回

END

;ARM 汇编指令实验的参考程序代码清单 ;文件名:add.s

;功能:计算1+2+3+?+N 的值

N EQU 5;

AREA Example,CODE,READONLY ENTRY CODE32

START

LDR R0,=N

MOV R2,R0 ;R2 充当计数器 MOV R0,#0 MOV R1,#0

LOOP

CMP R1,R2 BHI ADD_END ADD R0,R0,R1 ADD R1,R1,#1 B LOOP

ADD_END

B START END

七、练习题

1.如何切换处理器状态

2.在Thumb 指令只有哪一条指令具有条件执行功能? 3.如何判断运算结果溢出?

搜索更多关于: ARM实验指导书(WJQ-2010) - 图文 的文档
ARM实验指导书(WJQ-2010) - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4k2l10ja566k2tg1y0pl_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top