实验二 ARM环境下汇编语言实验
基于arm的汇编实验报告

竭诚为您提供优质文档/双击可除基于arm的汇编实验报告篇一:汇编实验报告实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用eDIT、mAsm、LInK、Debug等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为Abc。
DATAsegmenTbuFDb23h,16h,08h,20h,64h,8Ah,91h,35h,2bh,7Fh cneQu$-buFDATAenDscoDesegmenTAssumecs:coDe,Ds:DATAsTART:pushDsxoRAx,AxpushAxmoVAx,DATAmoVDs,AxmoVbx,oFFseTbuFmoVcx,cnDeccxmoVAL,[bx]IncbxLp:cmpAL,[bx]JbenexTmoVAL,[bx]nexT:IncbxDeccxJnZLpmoVAh,4chInT21hcoDeenDsenDsTART键入以下命令:c:\>eDITAbc.Asm此时屏幕的显示状态如图1所示。
1图1用eDIT编辑Abc.Asm程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,mAsm汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.obJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在Dos状态下,采用宏汇编程序mAsm 对源程序文件进行汇编,其操作过程如图2所示。
实验二_ARM汇编语言程序设计

实验二ARM汇编语言程序设计实验目的1、了解ARM汇编语言程序的结构特点2、了解ARM汇编语言程序的编写方法3、掌握用ARM汇编语言设计简单程序实验仪器设备及软件ARM实验箱,计算机,ADS程序开发软件实验原理1、存储空间的格式ARM920将存储空间视为从0开始由字节组成的线性集合,字节0-3中保存了第一个字,字节4-7中保存了第二个字,依此类推。
字节还可以按小端格式或大端格式排列。
ARM实验箱中存储器的配置见附录C。
2、ARM的寄存器ARM状态下任何时刻都可以看到16个通过寄存器(r0-r15),1或2个状态寄存器(CPSR,SPSR),在特权模式下会切换到具体模下的寄存器组。
每个寄存器都是32位的,并且每个通用寄存器都可以作为数据处理的源数据或目标数据寄存器。
因此可以编写出更精简的程序。
3、ARM指令的条件执行状态寄存器中的N,Z,C,V是数据处理指令影响的标志。
几乎每条ARM指令可以根据状态位或状态位的逻辑运算有条件执行。
条件执行的指令后缀参考教材。
4、桶形移器ARM的桶形移位器,使ARM指令的中第二个操作数非常录活。
利用移位器,一条ARM 指令可以完成更多功能。
移位操作有:LSL 逻辑左移LSR 逻辑右移ASL 算术左移ASR 算术右移ROR 循环右移RRX 带扩展循环右称实验内容1、把内存中ramaddr开始的ramword个字清零(1)用后变址法ramaddr equ 0x31000000ramword equ 64clrrammov r0,#0mov r1,#ramwordldr r2,=ramaddrclrram1str r0,[r2],#4subs r1,r1,#1bne clrram1mov pc,lrLTORG(2)用前变址法clrrambakmov r0,#0mov r1,#ramwordldr r2,=ramaddr-4clrram2str r0,[r2,#4]!subs r1,r1,#1bne clrram2mov pc,lrLTORG2、把寄存器中,r0-r12的32位无符号32位数进行求和,和的低32位保存在r1中,高32位保存在r0中。
arm实验二

汇编语言与接口技术实验报告院系信息科学与工程学院专业班级计科1101学生姓名杜海指导教师黄向宇提交日期 2014年 4 月 9日实验二 ARM汇编语言程序设计一、实验目的●初步学会使用IAR EWARM 开发环境及ARM 软件模拟器。
●通过实验掌握简单ARM 汇编指令的使用方法。
●通过实验掌握使用ldm/stm、b、bl 等指令完成较为复杂的存储区访问和程序分支,学习使用条件码,加强对CPSR 的认识。
●通过实验掌握 ARM 处理器16 位Thumb 汇编指令的使用方法。
二、实验内容●利用实验参考程序学习使用ldr/str、mov 等指令访问寄存器或存储单元。
使用add/sub/lsl/lsr/and/orr 等指令,完成基本数学/逻辑运算。
●编写程序循环对R4~R11 进行累加8 次赋值,R4~R11 起始值为1~8,每次加操作后把R4~R11 的内容放入SP 栈中,SP 初始设置为0x800。
最后把R4~R11 用LDMFD 指令清空赋值为0。
●新建工程,并自行编写汇编程序,分别使用ldr、str、ldmia、stmia 操作,实现对某段连续存储单元写入数据,并观察操作结果。
学习分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。
●编写程序从ARM状态切换到Thumb,在ARM 状态下把R2 赋值为0x12345678,在Thumb状态下把R2 赋值为0x87654321。
同时观察并记录CPSR、SPSR 的值,分析各个标志位。
三、实验设备1. UP-TECH S2410实验平台,ARM标准/增强型仿真器套件2. PC 操作系统WIN98 或WIN2000 或WINXP,IAR EWARM集成开发环境,仿真调试驱动程序(H-JTAG)。
四、实验参考程序#*********************************************************************************************# NAME: ARMcode1.s *# Author: Embest *# Desc: ARMcode examples *# copy words from src to dst *# History: shw.He 2005.02.22 *#*********************************************************************************************NUM EQU 20AREA ARMcode1,CODE,READONLYENTRYSTARTldr r0, =src /* r0 = pointer to source block */ldr r1, =dst /* r1 = pointer to destination block */mov r2, #num /* r2 = number of words to copy */mov sp, #0x400 /* set up stack pointer (r13) */blockcopymovs r3,r2, LSR #3 /* number of eight word multiples */beq copywords /* less than eight words to move ? */stmfd sp!, {r4-r11} /* save some working registers */octcopyldmia r0!, {r4-r11} /* load 8 words from the source */stmia r1!, {r4-r11} /* and put them at the destination */subs r3, r3, #1 /* decrement the counter */bne octcopy /* ... copy more */ldmfd sp!, {r4-r11} /* don't need these now - restore originals */ copywordsands r2, r2, #7 /* number of odd words to copy */beq stop /* No words left to copy ? */ wordcopyldr r3, [r0], #4 /* a word from the source */str r3, [r1], #4 /* store a word to the destination */subs r2, r2, #1 /* decrement the counter */bne wordcopy /* ... copy more */stopb stopALIGNsrcDCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4dstDCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0END五、实验步骤实验一:利用实验参考程序学习使用ldr/str、mov 等指令访问寄存器或存储单元。
ARM嵌入式实验报告

实验一 ARM汇编指令使用实验——基本数学/逻辑运算一、实验目的1. 初步学会使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。
2. 通过实验掌握数据传送和基本数学/逻辑运算的ARM汇编指令的使用方法。
二、实验设备1. 硬件:PC机。
2. 软件:ADS 1.2 / Embest IDE 200X集成开发环境。
三、实验内容1.熟悉ADS 1.2 / Embest IDE 200X开发环境的使用,使用LDR/STR和MOV等指令访问寄存器或存储单元,实现数据的加法运算。
具体实验程序如下:/* armasm1a.s */.EQU X, 45 /*定义变量X,并赋值为45*/.EQU Y, 64 /*定义变量Y,并赋值为64*/.EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/.GLOBAL _START.TEXT_START: /*程序代码开始标志*/MOV SP, #STACK_TOPMOV R0, #X /*X的值放入R0*/STR R0, [SP] /*R0的值保存到堆栈*/MOV R0, #Y /*Y的值放入R0*/LDR R1, [SP] /*取堆栈中的数到R1*/ADD R0, R0, R1STR R0, [SP]STOP: B STOP /*程序结束,进入死循环*/.END2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。
具体实验程序如下:/* armasm1b.s */.EQU X, 45 /*定义变量X,并赋值为45*/.EQU Y, 64 /*定义变量Y,并赋值为64*/.EQU Z, 87 /*定义变量Z,并赋值为87*/.EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/.GLOBAL _START.TEXT_START: /*程序代码开始标志*/MOV R0, #X /*X的值放入R0*/MOV R0, R0, LSL #8 /*R0的值乘以2的8次方 */MOV R1, #Y /*Y的值放入R1*/ADD R2, R0, R1, LSR #1 /*R1的值除以2再加上R0后的值放入R2*/MOV SP, #0X1000STR R2, [SP]MOV R0, #Z /*Z的值放入R0*/AND R0, R0, #0XFF /*取R0的低八位*/MOV R1, #Y /*Y的值放入R1*/ADD R2, R0, R1, LSR #1 /*R1的值除以2再加上R0后的值放入R2*/ LDR R0, [SP] /*Y的值放入R1*/MOV R1, #0X01ORR R0, R0, R1MOV R1, R2 /*Y的值放入R1*/ADD R2, R0, R1, LSR #1 /*R1的值除以2加上R0的值放入R2*/STOP: B STOP /*程序结束,进入死循环*/.END四、实验操作步骤1.新建工程。
实验二C ARM汇编指令实验

实验二ARM汇编指令实验一、实验目的1.掌握ARM数据处理指令的用法2.了解ARM汇编指令灵活的第二操作数,编写简单的汇编程序二、实验内容1.用MOV和MVN指令访问ARM通用寄存器2.使用ADD、SUB、AND、ORR、CMP和TST指令完成数据的加减运算及逻辑运算。
3.用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegister)监视运算值,打开存储器观察窗口(Memory)监视0x40003100地址处的值。
三、预备知识1、用ARM ADS集成开发环境,编写和调试程序的基本过程。
2、ARM指令的使用四、实验设备及工具(包括软件调试工具)硬件:PC机Pentium100以上。
软件:PC机Windows操作系统、ARM ADS 1.2集成开发环境、AXD五、实验步骤1.启动ADS1.2,使用ARM Executable Image工程模板建立一个工程。
如SY22.建立汇编源文件Test2.s,然后加入工程中。
3.编译、连接工程,选择Project Debug ,启动AXD软件仿真调试。
4.打开寄存器窗口,监视寄存器的值。
5.可以单步运行程序,可以设置、取消断点,或者全速运行,停止运行,调试时观察寄存器的值,运行结果见图2-1。
图2-1 ARM实验2的运行结果六、实验参考程序X EQU 11Y EQU 8BIT23 EQU (1<<23) ;BIT23 = 0X00800000AREA test2,CODE,READONL YENTRYCODE32START;MOV,ADD, R8=R3=X+YMOV R0,#XMOV R1,#YADD R3,R0,R1MOV R8,R3;MVN,SUB, R5= 0X5FFFFFF8 -R8*8MVN R0,#0XA0000007SUB R5,R0,R8,LSL #3;CMP, 5*Y/2 > 2*X ? R5=R5&0XFFFF0000,R5=R5|0X000000FFMOV R0,#YADD R0,R0,R0,LSL #2MOV R0,R0,LSR #1MOV R1,#XMOV R1,R1,LSL #1CMP R0,R1LDRHI R2,=0xFFFF0000ANDHI R5,R5,R2ORRLS R5,R5,#0x000000FF;TST,BIC:BIT23 =1?BIT6 = 0:1TST R5,#BIT23BICNE R5,R5,#0x00000040B STARTEND。
ARM汇编指令实验

ARM 汇编指令实验一一. 实验目的1.初步学会使用μVision IDE for ARM 开发环境及ARM 软件模拟器;2.通过实验掌握简单 ARM 汇编指令的使用方法。
二. 实验设备1.硬件:PC 机一台;2.软件:μVision IDE for ARM 集成开发环境,Windows 98/2000/NT/XP。
三. 实验内容1.熟悉开发环境的使用并使用 ldr/str,mov 等指令访问寄存器或存储单元;2.使用 add/sub/lsl/lsr/and/orr 等指令,完成基本算术/逻辑运算。
四. 实验原理ARM 处理器共有37 个寄存器:31 个通用寄存器,包括程序计数器(PC)。
这些寄存器都是32 位的;6 个状态寄存器。
这些寄存器也是32 位的,但是只是使用了其中的12 位。
1. ARM 通用寄存器通用寄存器(R0-R15)可分为三类:1)不分组寄存器 R0~R7不分组寄存器R0~R7 在所有处理器模式下,它们每一个都访问一样的32 位寄存器。
它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。
2)分组寄存器 R8~R14分组寄存器R8~R14 对应的物理寄存器取决于当前的处理器模式。
若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。
寄存器R8~R12 各有两组物理寄存器:一组为FIQ 模式,另一组为除了FIQ 以外的所有模式。
寄存器R8~R12 没有任何指定的特殊用途,只是在作快速中断处理时使用。
寄存器R13,R14 各对应6 个分组的物理寄存器,1 个用于用户模式和系统模式,其它5 个分别用于5 种异常模式。
寄存器R13 通常用做堆栈指针,称为SP;寄存器R14 用作子程序链接寄存器,也称为LR。
3)程序计数器 PC寄存器R15 用做程序计数器(PC)。
在本实验中,ARM 核工作在用户模式,R0~R15 可用。
2. 存储器格式ARM 体系结构将存储器看作是从零地址开始的字节的线性组合。
ARM实验报告ARM

XI`AN TECHNOLOGICAL UNIVERSITY 实验报告西安工业大学实验报告一丶实验目的初步学会使用Embest IDE for ARM开发环境及ARM软件模拟器。
通过实验掌握简单ARM汇编指令的使用方法。
二、实验内容熟悉开发环境的使用并使用ldr/str,mov等指令访问寄存器或存储单元。
使用add/sub/lsl/lsr/and/orr等指令,完成基本数学/逻辑运算。
三、实验原理ARM 处理器共有37 个寄存器:31 个通用寄存器,包括程序计数器(PC)。
这些寄存器都是32 位的。
6 个状态寄存器。
这些寄存器也是32 位的,但是只是使用了其中的12 位。
ARM 通用寄存器通用寄存器(R0~R15)可分为3 类:不分组寄存器R0~R7;分组寄存器R8~R14;程序计数器R15;1) 不分组寄存器R0~R7;R0~R7 是不分组寄存器。
这意味着在所有处理器模式下,它们每一个都访问一样的32 位寄存器。
它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。
2)分组寄存器R8~R14R8~R14 是分组寄存器。
它们每一个访问的物理寄存器取决于当前的处理器模式。
若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。
寄存器R8~R12 各有两组物理寄存器:一组为FIQ 模式,另一组为除了FIQ 以外的所有模式。
寄存器R8~R12 没有任何指定的特殊用途。
只是使用R8~R14 来简单地处理中断。
寄存器R13,R14 各有6 个分组的物理寄存器。
1 个用于用户模式和系统模式,其它5 个分别用于5 种异常模式。
寄存器R13 通常用做堆栈指针,称为SP。
每种异常模式都有自己的R13。
寄存器R14 用作子程序链接寄存器,也称为LR。
3) 程序计数器R15寄存器R15 用做程序计数器(PC)。
在本实验中,我们认为ARM 核工作在用户模式,R0~R15 可用。
四、实验过程1)打开Embest IDE Pro软件,选择菜单项File-->New Workspace,系统弹出对话框,点击OK创建名为TEXT的新工程,并同时创建一个与工程名相同的工作区。
实验二ARM汇编语言实验

x .long 0xaa88 Y .long 0x77aa z .long 0x123489ab
.text global _start _start:
MOV R0 , #0x55
实验设备: 宿主机:PC机
wait: B wait .end
目标机:IDE内置的软件模拟器
3、实验操作步骤
1)运行EmbestIDE
2)新建工作区
3)新建一个文件, 另存为以.s为扩展名的文件
4)在文件中编辑程序
5)把编辑好的源文件添加到工程中
6)设置工程属性
选择编译工具 调试配置 连接方式(SIM) 下载符号表文件 调试目标文件Fra bibliotek 下载内存地址
3、实验操作步骤
8)构建工程 可以单独编译一个文件,也可采用build实现编译、连
实验二 ARM汇编语言实验
2019/8/1
1
1 实验目的与要求 2 实验内容 3 实验操作步骤 4 测试数据与实验结果
1、实验目的与要求
目的: 1)熟练使用EmbestIDE集成开发环境。 2)基本掌握 ARM 汇编语言
要求: 1)独立完成程序设计、编码与调试 2)编写实验报告
2、实验内容
按照GNU汇编程序文件格式,用ARM汇编语言编写程序, 求三个数(x、y、z)中的最大值与最小值,分别存放在寄 存器R6、R7中。三个数用伪操作定义如下:
接一起完成。 如果编译过程出错,需要修改错误,直到构建成功。
9)调试 连接目标机 下载 运行(打开源文件、设置断点) 浏览(寄存器、内存)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二ARM环境下汇编语言实验一、实验目的1、掌握基本的ARM汇编语言编程方法;2、深入理解ARM开发环境的体系结构;3、巩固使用AXD调试的方法二、实验内容1、单独使用ARM汇编语言编写一个工程,在AXD下调试,观察结果三、实验设备1、硬件:DM2410B+实验系统,PC机2、软件:PC机操作系统(WINDOWS 2000),ARM Developer Suite v1.2四、预备知识1、掌握在ADS开发环境下建立工程与调试程序的方法(参考“ADS开发环境实验”与“JTAG 下载和调试实验”);2、熟悉ARM汇编语言;3、熟悉S3C2410芯片结构系统和实验系统的硬件资源(参考《DM2410实验系统使用手册》)五、基础知识ADS IDE开发坏境集成了CodeWarri or编译器和AXD Debugger调试器。
在ADS IDE开发环境中编写的程序必须遵循CodeWarrior编译器所支持的语法规则1、基于CodeWarrior的汇编语言语法及规则:一个完整的汇编语句代码由3部分组成:1)代码的行号:行号后面不用“:”结尾;2)汇编指令或伪指令部分;3)注释部分:以“;”开头2、基于CodeWarrior的汇编语言伪操作1) AREA伪指令2)ENTRY伪指令3)END伪指令4)EQU指令3、指令的条件域当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。
当指令的执行条件满足时,指令被执行,否则指令被忽略。
每一条ARM指令包含4位的条件码,位于指令的最高4位[31:28]。
条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。
在1 6种条件标志码中,只有1 5种可以使用,第16种(1111)为系统保留,暂时不能使用。
4、存储器访问指令ARM微处理器支持加载/存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则完成相反的操作。
常用的加载存储指令如下:——LDR 字数据加载指令——LDRB 字节数据加载指令——LDRH 半字数据加载指令——STR 字数据存储指令——STRB 字节数据存储指令——STRH 半字数据存储指令5、程序分支指令跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转:——使用专门的跳转指令。
——直接向程序计数器PC写入跳转地址值。
通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR, PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。
ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令:——B 跳转指令——BL 带返回的跳转指令——BLX 带返回和状态切换的跳转指令——BX 带状态切换的跳转指令六、实验说明1、本实验用到的代码如下:;===============================================================;实验名称:ARM汇编语言编程实验;程序功能:实现从源地址拷贝num个字数据,到目的地址des中;===============================================================;下面是段名为Init的,只读的代码段AREA Init, CODE, READONLYnum EQU 20ENTRY ;伪指令指出程序的入口点;传递参数并设置堆栈startLDR r0, =src ;r0 = 源数据块地址LDR r1, =dst ;r1 = 目的数据块地址MOV r2, #num ;r2 = 拷贝字数量MOV sp, #0x400 ;建立栈指针(r13);块拷贝:以32个字节(8个字)为单位进行拷贝;使用指令:LDMIA,STMIAblockcopyMOVS r3, r2, LSR #3 ;r3 = r2/8 = 2(num = 20)BEQ copywords ;少于8个字则跳转到copywords处理STMFD sp!, {r4 - r11} ;保存工作寄存器octcopyLDMIA r0!, {r4 - r11} ;从源地址取出8个字数据分别存放到(r4 - r11)中STMIA r1!, {r4 - r11} ;将(r4 - r11)中的数据设置到目的数据块地址SUBS r3, r3, #1 ;计数器递减BNE octcopy ;重复拷贝LDMFD sp!, {r4 - r11} ;恢复工作寄存器;字拷贝:以4个字节(1个字)为单位进行拷贝;使用指令:LDR,STRcopywordsANDS r2, r2, #7 ;最多拷贝7个,多余8个先使用blockcopy,然后使用copywords拷贝BEQ stop ;是否拷贝完毕,拷贝完毕则跳转到stopwordcopyLDR r3, [r0], #4 ;从源地址取出1个字数据存放到r3中STR r3, [r1], #4 ;将r3中的数据设置到目的数据地址SUBS r2, r2, #1 ;计数器递减BNE wordcopy ;重复拷贝;将程序的控制权转交给调试器stopMOV r0, #0x18 ;angel_SWIreason_ReportExceptionLDR r1, =0x20026 ;ADP_Stopped_ApplicationExitSWI 0x123456 ;ARM semihosting SWI;下面是段名为BlockData的,可读写的数据段;定义源地址数据,以及目的地址数据AREA BlockData, DATA, READWRITEsrc DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0END ;程序结束2、对本实验代码的分析1)第一部分中,第一句“AREA Init,CODE,READONLY’’定义了一个代码段,段名为Init,是只读段;第二句“num EQU 20’’定义一个字符num代表数值常量20;第三句“ENTRY’’标识一个代码段的入口;2)第二部分是start部分,完成的功能是传递参数并设置堆栈;3)第三部分实现的功能是块拷贝,即以32个字(8个字)为单位进行拷贝,包括“blockc opy"和“octcopy"两部分。
其中,“blockcopy”部分完成检查要拷贝的数据是否构成一个块(8个字),以及保存工作寄存器的功能;“octcopy"部分完成具体的一个块(8个字)的拷贝,并恢复工作寄存器的功能;4)第四部分实现的功能是字拷贝,即以1个字(4个字节)为单位进行拷贝,也包括两部分:“copywords"部分和“wordcopy”部分。
其中,“copywords’’部分完成的功能是:如果在“blockcopy"部分中发现要拷贝的数据不够一个块,即8个字,那么就跳转到“copywords"部分进行字的拷贝。
如果字拷贝完毕,则跳转到“stop”部分结束程序。
“wordcopy”部分完成的功能是:实现具体的一个字的拷贝;5)第五部分是“stop”部分,作用是将程序的控制权转交给调试器。
需要完成三部分的工作:①在寄存器r0中写入操作的类型。
语句“MOV r0,#0x18”将r0赋值为0x18,这个立即数对应于宏angel_SWIreason_ReportException,表示r1中存放程序的执行状态②在r1中写入程序的状态参数语句“LDR r1,=0x20026”将r1的值设置成ADP_Stopped_ApplicationExit,该宏表示程序正常退出③使用SWI将控制权转交给调试器语句“SWI 0x123456”结束程序,将CPU的控制权交回到调试器手中。
6)第六部分定义了一个数据段,段名是BlockData,是可读写的段。
该段中定义了源地址的数据和目的地址的数据7)第七部分是“END”语句,作用是结束程序七、实验步骤1、将光盘目录下“ADS实验指导\ADS开发环境实验\C语言与汇编语言实验\ assemble”工程复制到硬盘上,用CodeWarrior打开Assemble. mcp工程文件。
2、本实验编译使用的内存配置方式和其他的实验不完全一样,所以在设置上有其特殊性。
在DebugRel目标配置下设置:1)对编写好的ARM汇编程序进行编译链接,生成可执行的assemble. axf二进制镜像 3、打开AXD5、用AXD打开项目可执行文件“assemble. axf”,用AXD调试代码并观察寄存器和存储器的值的变化,打开AXD调试器并配置,打开Processor Registers窗口和Memory窗口,导入本实验代码的镜像文件assemble.axf。
然后,在程序中设置适当的断点,点击工具栏上的Step In按钮,就可以在左侧的Processor Registers窗口和在下方的Memory窗口中看到寄存器和存储器中的值的变化。
以下给出详细的调试框图:。