当前位置:
文档之家› ARM原理与应用寻址方式实验报告
ARM原理与应用寻址方式实验报告
A:源代码。。。。
B:程序执行过程
1)先为寄存器赋值
2)将R0-R4,LR入栈,满递减堆栈。就是将R0-R4,LR内的内容保存到sp所指向的内容地址空间,堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。
3)查看是否已将数据存储到内存中,可以看到寄存器中的数据已经存储到内存指定单元中了
B:程序执行过程
1)用立即数寻址方式将R0寄存器赋值为2,再将R0内的数左移3位使它指向内存的一个指定地址#0x00000010
2)取出指定地址的值,将其放到R1寄存器中
3)查看内存#0x00000010地址的内容(可以看到该内存地址的值与赋值给R1的值是一样的,证明上述操作成功)最后一个指令没什么意义,这里就不描述了。。。。
三、实验内容与步骤
1:验证ARM的寄存器和立即数寻址方式
A:源代码。。。。。程序的功能是:首先将立即数15,移到寄存器R0中,接着再把立即数8移到寄存器R1中,然后使用寄存器寻址的方式将RO和R1中的数相减
B:程序执行过程:
1)使用立即数寻址的方式将15和8分别赋给寄存器R0和R1
2)使用寄存器寻址的方法用R0减去R1再将所得结果赋给R0
六、教师评语
签名:
日期:
成绩
4:验证ARM的基址寻址方式
A:源代码。。。
B:程序执行过程
1)先为需要用到的寄存器赋值,如下图watch窗口的显示的结果
2)将R0单元中的数据读出到R1-R3,R12,自动加1(操作的结果是将R0所指向的内存地址的内容连续读出到R1-R3,R12)
2)查看R0所指向的内存连续空间内容是否与赋值给寄存器的数据一致,可以
出寄存器R1-R3,R12内的值是从R0所指向的内存单元0x00000000开始,连续读取出来的
3)将0x00000010的地址写入到R1寄存器中
4)将R3-R5,R10中的数据保存到R1指向的地址,R0自动加1
5)查看内存的保存结果,可以看出数据已经保存到指定的内存单元中了。
5:验证ARM的堆栈寻址方式
2:验证ARM的寄存器偏移寻址方式
A:源代码。。。。:功能是首先分别给寄存器R0,R1,R2,R3赋值为2
再将R2寄存器的值左移三位所得结果赋给R0(R2值不变),最后将R1减去R2左移R3(寄存器内的值)位的值,并将结果赋给R0
B:程序执行过程
1)先为各寄存器赋值
2)然后执行对R2寄存器内的数进行移位并将所得结果赋给R0,可以观察到R2内的值是不变的
3)最后执行指令让寄存器R1内的数减去R2移位R3并将所得结果赋给R1,可以看出R2的值没有变
3:验证ARM的寄存器间接寻址方式
A:源代码。。。功能是:先给R20寄存器用立即数寻址方式赋一个值,然后将对R0进行移位操作使它成为指向内存指定位置的地址,然后将该地址的内容提取到R1寄存器中,接着进行交换操作
《ARM原理与应用》实验报告
实验序号:02实验项目名称:寻址方式
学 号
姓 名
一、实验目的及要求
•编一段程序在ADS1.2 IDS环境下单步执行,观察相关内容(寄存器、内存单元、状态等),验证ARM的各种寻址方式
•调试汇编程序
二、实验设备(环境)及要求
硬件:PC机;
软件:VMware,ADS1.2 IDE
3)数据出栈,放入R0-R4,LR寄存器,满递减堆栈
四、实验结果与数据处理
实验结果及处理如上。。。。
五、分析与讨论
通过这次实验对ADS1.2 IDE这个工具更加熟悉,通过ADS1.2 IDE我们可以很方便第对程序进行调试,通过单步执行程序,我们可以随着程序的执行查看各个寄存器的内容,以及内存的内容。。。。。。