Forpersonaluseonlyinstudyandresearch;mercialuse蚁嵌袈入虿式蒇系螄统袈与袆应羄用蒃实羈验芆报蚆告芁班级:网络111莂姓名:石长江蚇学号:201100824123肄莄蒂肈螆实验一汇编指令试验肃一、实验目的蒂掌握ARM7TMDI汇编指令的用法,并能编写简单的汇编程序;葿学习ARM微控制器的16位Thumb汇编指令的使用方法芄掌握指令的条件执行袂二、实验设备薁硬件:嵌入式实验平台一套、仿真器一个、PC机一台。薆软件:Windows98/2000/NT/XP操作系统、仿真器驱动程序、ADS开发软件一套。羆三、实验内容蚁分别使用ARM、Thumb指令ADD,MOV,CMP,B计算1+2+3+…+N的值。蚁四、实验原理羇ARM处理器共有两种工作状态:蒄ARM32位,这种状态下执行字对准的ARM指令。蚄Thumb16位,这种状态下执行半字对准的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时,运算结束。螇五、,使用ARMExecuatableImage工程模板建立一个工程ASM_Project。,编写实验程序,然后添加到工程中()。,选择【Project】->【Debug】,启动AXD进行调试。(ProcessorRegisters),选择Current项监视各寄存器的值。,注意执行BXR0指令前后CPSR寄存器的T位。薄说明:在寄存器窗口的CPSR寄存器,大写字母的位表示该位为1,小写字母的位表示该莀位为0(比如“T”表示T位为1,“t”表示T位为0)。,完成练习题莇六、实验参考程序莃Thumb汇编指令实验的参考程序代码清单蒀;文件名:;功能:计算1+2+3+…+N的值袅NEQU50定义N的值为50肂AREAtestcode,CODE,READONLY区域名为testcode,代码,只读薀ENTRY入口蒈CODE32薆ARM_CODELDRSP,=0x40003F00sp=0x40003F00袀ADRR0,THUMB_CODE+1将分支目标地址送R0,使R1的bit[0]=羄CODE16汇编以下代码为thumb指令羃THUMB_CODE蚀LDRR0,=N伪指令R0=50羅BLSUM_N跳转到SUM_N执行螆BTHUMB_CODE跳转到THUMB_CODE,thumb模式蚂;名称:SUM_N螀;功能:计算1+2+3+…+N的值莆;入口参数:R0(N的值)膄;出口参数:R0(运算结果)蒁SUM_N衿PUSH{R1-R7,LR}螇MOVSR2,R0R0的内容放入R2袆BEQSUM_END相等转到SUM_END蒄CMPR2,#1R2与1比较,设置标志位罿BEQSUM_END相等转到SUM_END芈MOVR1,#1将1送入R1莄MOVR0,#0将0送入R0芃SUM_L1ADDR0,R1R0=R0+R1聿BCSSUM_ERR虿CMPR1,R2R1与R2比较,设置标志位肆BHSSUM_END肂ADDR1,#1
嵌入式系统与应用实验报告 来自淘豆网m.daumloan.com转载请标明出处.