实验2 顺序与分支汇编语言程序设计实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM技术原理与应用

实验报告

实验2 顺序与分支汇编语言程序设计实验

专业电子信息工程

班级14电信班

学生姓名陈定光

学号2014010243101

指导教师曹计昌

2017年4月19 日

实验2 顺序与分支汇编语言程序设计实验

1、实验目的

(1)掌握顺序结构汇编语言程序设计;

(2)掌握分支结构汇编语言程序设计;

(3)掌握AXD环境下顺序结构和分支结构汇编语言程序的运行、调试。

2、实验要求

1、实验必须在在ADS1.2环境下进行。

2、工程名、汇编语言源文件名按照下面规则命名:

工程名:pj+学号最后4位+其它字符

汇编语言源文件名:p+学号最后4位+其它字符+.s

例如:张维智同学学号最后4位是3134

因此,pj3134、pj3134a、pj31341等都是允许的工程名;而 p3134a.s、p3134b.s等都是允许的源文件名。

3、实验报告中需要说明实验中在ADS、AXD环境下进行的实际操作;

4、实验报告中应给出实际的实验操作、编写的源程序、及计算机的调试观察结果;

5、按照规定格式打印实验报告。

3、实验内容

1、编写程序p2xxxx1.s完成下面任务:

(1)将1、2、3、4、5、6、7、8依次传送给寄存器R1-R8;

分析:如上图显示,寄存器r1-r8分别是存放1-8

(2)用STMIA指令将R1-R8保存到刚好能够存储8个字数据ARY_A数组中。

分析:如上图显示,地址0x8058-0x8078分别存放1-8

(3)用STMIB指令将R1-R8保存到刚好能够存储8个字数据ARY_B数组中。

分析:如上图显示,地址0x8088-0x80A7分别存放1-8

(4)用STMDA指令将R1-R8保存到刚好能够存储8个字数据ARY_C数组中。

分析:如上图显示,地址0x8094-0x80B3分别存放1-8

(5)用STMDB指令将R1-R8保存到刚好能够存储8个字数据ARY_D数组中。

(6)用LDMIA指令将ARY_A数组中数据5、6、7、8传送到R1-R4寄存器。

分析:如上图图中的方框图的数据显示,r1=5,r2=5,r3=7,r4=8 (7)用LDMIB指令将ARY_A数组中数据1、2、3、4传送到R5-R8寄存器。

分析:如上图图中的方框图的数据显示,r5=1,r6=2,r7=3,r8=4

2、编写程序p2xxxx2.s完成下面任务:

(1)创建由10个字元素的满递减堆栈。并将SP指向栈底。

分析:如上图显示,寄存器r0-r9分别存放0-9一共10元素,同时地址0Xffffffd8-0xffffffff分别存放着0-9,SP指向栈底

(2)将1、2、3、4、5、6、7、8依次传送给寄存器R1-R8,再用STMFD指令将R1-R8寄存器压栈。观察堆栈数据和SP。

分析:如上图显示,寄存器r1-r8分别存放1-8

分析:用STMFD指令将R1-R8寄存器压栈,如上图显示,地址0xffffffe0-oxfffffff分别存放1-8,每个数字4位

(3)用LDMFD指令将栈中8个数据依次出栈并传送给R3-R10寄存器。

分析:如上图显示,寄存器r3-r10分别存放1-8

3、编写程序p2xxxx3.s完成下面任务:

(1)开放IRQ向量中断,N标志置1;并给出程序执行前后cpsr的值。执行之前:

执行后

(2)禁止IRQ向量中断,N标志清零;并给出程序执行前后cpsr的值。

执行之前

执行后

(3)开放快中断,C标志置1;并给出程序执行前后cpsr的值。执行之前

执行后

(4)禁止快中断,C标志清零;并给出程序执行前后cpsr的值。

执行之前

执行后

4、若两个条件均成立,则将两个数相加。

其C代码为:if((a!=10)&&(b!=20)) a+=b;

编写能够实现上述C代码的汇编语言源程序p2xxxx4.s,R0为a,R1为b。然后进行汇编、调试、并给出运行结果。

程序代码:AREA EX4,CODE,READONLY

ENTRY

CODE32

START

CMP R0,#10;R0比较10

CMPNE R1,#20;不等于20

ADDNE R0,R0,R1;R0=R0+R1

END

1、创建工程与源文件,写入程序代码进行编译、调试,显示代码正确

分析:设R0=1,设R1=3, 如上图显示,寄存器r0=1,r1=3

分析:设R0=1,设R1=3, 如上图显示,执行程序后,寄存器r0=4,r1=3

5、设有内存中有op1、op2两个数据。编程p2xxxx5.s完成下面任务:

(1)当op1>0时,做op1+op2,结果送R8寄存器;

(2)当op1=0时,做op1+op2<<2;结果送R9寄存器;

(3)当op1<0时,做op2-op1,结果送R10寄存器;

分别就op1=1、op2=2;op1=0、op2=2;op1=-1、op2=2;对所编写程序进行测试,记录实验结果。

程序代码:AREA EX5,CODE,READONLY

ENTRY

CODE32

START

MOV R0,#1;R0=1

MOV R1,#2;R1=2

MOV R3,#4

MOV R8,#0

MOV R9,#0

MOV R10,#0

CMP R0,#0;1与0做比较

BEQ LOOP_2;如果op1=0,跳转到LOOP_2

BGT LOOP_3;如果op1>0;跳转到LOOP_3

SUB R10,R1,R0;否则op1<0,R10=R1-R0

B end0;结束跳转到结束

LOOP_2

ADD R0,R0,R1;R0=R0+R1

MUL R9,R0,R3;R9=R0*4

B end0;结束跳转到结束

LOOP_3

ADD R8,R0,R1;R8=R0+R1

B end0;结束跳转到结束

end0

NOP

END

1、创建工程与源文件后,进行编译、调式

相关文档
最新文档