- 1、本文档共151页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章ARM嵌入式微处理器指令系统
第三章 ARM嵌入式微处理器指令系统
为什么需要学习汇编指令
嵌入式系统的初始化代码需要用汇编指令来编写。初始化代码通常包括处理器的初始化、内存初始化等,其中涉及一些比较特殊的操作,比如设置处理器在不同工作模式下的堆栈指针,需要使用特殊的访问处理器状态寄存器的指令,强制处理器切换到不同模式下进行操作;
一些中断例程尤其是作为一种异常被响应的第一级中断派发程序需要用汇编指令来编写,以提高效率;
在软件的调试过程中,熟悉汇编指令更有助于查找疑难问题;
某些指令本身就是不能直接由编译器产生的,而需要人工编写。
为什么需要学习汇编指令
可以直接控制在C语言编程时不能有效使用的3个优化工具:
指令调整 调整一段代码中的指令序列,以避免处理器的暂停等待。ARM指令执行是在指令流水线中进行的,所以一条指令执行的时间会受其相邻指令的影响,在“附录1指令流水线”中描述了相关问题。
寄存器分配 决定如何分配变量给ARM寄存器或者堆栈,以获得最好的性能。目标是要使访问存储器的次数降到最少。
条件执行 可以使用ARM条件代码和条件指令的全部功能。
简单的ARM程序
;文件名:TEST1.S
;功能:实现两个寄存器相加
;说明:使用ARMulate软件仿真调试
AREA Example1,CODE,READONLY ;声明代码段Example1
ENTRY ;标识程序入口
CODE32 ;声明32位ARM指令
START MOV R0,#0 ;设置参数
MOV R1,#10
LOOP BL ADD_SUB ;调用子程序ADD_SUB
B LOOP ;跳转到LOOP
ADD_SUB
ADDS R0,R0,R1 ;R0 = R0 + R1
MOV PC,LR ;子程序返回
END ;文件结束
使用“;”进行注释
标号顶格写
实际代码段
声明文件结束
主要内容
1 ARM指令集概述
2 ARM V4T架构指令体系
3 ARM v5TE 架构指令体系
4 ARM v6 架构指令体系新特性
5 Thumb指令集
3.1.1 ARM指令集
ARM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单。ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代码密度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。
简介:
3.1.1 ARM指令集—寻址方式
ARM处理器的寻址方式:
寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有9种基本寻址方式。
1.寄存器寻址; 2.立即寻址;
3.寄存器移位寻址; 4.寄存器间接寻址;
5.基址寻址; 6.多寄存器寻址;
7.堆栈寻址; 8.块拷贝寻址;
9.相对寻址。
操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下:
MOV R1,R2 ;将R2的值存入R1
SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0
寻址方式分类——寄存器寻址
MOV R1,R2
0xAA
3.1.1 ARM指令集—寻址方式
立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下:
SUBS R0,R0,#1 ;R0减1,结果放入R0,并且影响标志位
MOV R0,#0xFF000 ;将立即数0xFF000装入R0寄存器
关于后面立即数的取值范围问题,将在后面PPT中说明。其要满足一定条件。
寻址方式分类——立即寻址
MOV R0,#0xFF00
0xFF00
从代码中获得数据
3.1.1 ARM指令集—寻址方式
寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:
MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R0, ;即是R0=R2×8
ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和
文档评论(0)