实验1_ARM汇编指令基础

实验1_ARM汇编指令基础

ID:41614159

大小:267.42 KB

页数:6页

时间:2019-08-28

实验1_ARM汇编指令基础_第1页
实验1_ARM汇编指令基础_第2页
实验1_ARM汇编指令基础_第3页
实验1_ARM汇编指令基础_第4页
实验1_ARM汇编指令基础_第5页
资源描述:

《实验1_ARM汇编指令基础》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验ARM汇编指令基础学号:姓名:一、实验目的•初步学会使用EmbestIDEforARM开发环境及ARM软件模拟器;•通过实验掌握简单ARM汇编指令的使用方法。二、实验原理ARM处理器共有37个寄存器:•31个通用寄存器,包括程序计数器(PC)。这些寄存器都是32位。•6个状态寄存器。这些寄存器也是32位,但只使用了其中的12位。1.ARM通用寄存器通用寄存器(R0〜R15)可分为3类。1)不分组寄存器R0〜R7R0〜R7是不分组寄存器。在所有处理器模式下,它们都能被访问。它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。2

2、)分组寄存器R8〜R14R8〜R14是分组寄存器。被访问的物理寄存器収决于当前的处理器模式。若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。寄存器R8〜R12各有两组物理寄存器:一组为FIQ模式,另一组为除了F1Q模式以外的所有模式。R8〜R12没有任何指定的特殊用途。只是使用R8〜R12来简单地处理川断。寄存器R13和寄存器R14各有6个分组的物理寄存器,1个用于用户模式和系统模式,其他5个分别用于5种异常模式。R13通常用作堆栈指针,称作SP。每种异常模式都有自己的R13。R14用作子程序链接寄存器,也称

3、作LR。3)程序计数器R15寄存器R15用作程序计数器(PC)。本实验中,ARU核工作在用户模式,R0〜R15可用。2.存储器格式ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。1)大端格式在这种格式中,字数据的高位字节存储在低地址中,而字数据的低位字节存放在高地址中,如下所示:讐址0字地址低地址891011456701233123221615872)小端格式在这种格式中,字数据的高位字节存储在高地址中,而字数据的低位字节存放在低地址屮,如下所示:高地址3123221615870字地址1110987654843

4、210低地址3・GNU基础知识EmbestIDE集成了GNU汇编器as、编译器gcc和链接器Id。因此,编写程序要符合GNU的语法和规则。这里简单介绍儿点基本知识:•程序默认入口点为“_staF,代码段默认起始地址为0x8000•常用伪操作符1)・equ为数字常量、基于寄存器的值和程序标号定义一个字符名称。2).global及.globl声明一个符号可以被其他文件引用,相当于声明了一个全局变量。3).text将操作符开始的代码编译到代码段或代码段子段(Subsection)。4).end标记汇编文件的结束行。三、实验内容•熟悉开发

5、环境的使用并使用ldr/str,mov等指令访问寄存器或存储单元。•使用add/sub/lsl/lsr/and/orr等指令,完成基本数学/逻辑运算。•运行EmbestIDE集成开发环境,将下面两段参考程序分别编辑输入,生成目标代码,设置调试模块,下载目标代码到软件仿真器。四、实验步骤1.打开memory窗口,观察地址0x8000-0x801f与地址Ox1000的内容。2.单步执行程序并观察和记录寄存器与memory的值变化。3.结合实验内容和相关资料,观察程序运行,通过实验加深理解ARM指令的使用。五、实验参考程序1.实验A参考

6、程序:/*定义变量x,并赋值为45*//*定义变量y,并赋值为64引/*定义栈顶0x1000*/.equx,45.equy,64.equstack_top,Ox1000.global_start.textMOVsp,#stack_topMOVrO,#xSTRr0,[sp]MOVrO,#yLDRrl,Lsp]ADDrO,rO,rlSTRrO,[sp]stop:Bstop_start:.end/*程序结束,进入死循环引/*程序代码开始标志勺/*x的值放入R0*//*R0的值保存到堆栈引/*y的值放入R0*//*収堆栈中的数到R1*/2

7、.实验B参考程序:.equx,45代定义变量X,并赋值为45可.equy,64/*定义变量y,并赋值为64引.equz,87/*定义变量z,并赋值为87*/.equstack_top,0x1000/*定义栈顶0X1000*/.global_start.text_start:严程序代码开始标志*/MOVr0,#x/*x的值放入R0*/MOVrO,rO,Isl#8/*R0的值乘以2的8次方*/MOVrl,#y/*y的值放入R1*/ADDr2,rO,rl,lsr#1/*R1的值除以2加上R0的值放入R2*/MOVsp,#0x1000ST

8、Rr2,LspJMOVrO,#z/*z的值放入R0*/ANDrO,rO,#0xFF/*取R0的低八位勺MOVN,#y/*y的值放入R1*/ADDr2,iO,rl,lsr#1/*R1的值除以2加上R0的值放入R2*/LDRr0,[sp]/b的值放入R

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。