第3章 3.3 arm指令及应用程序设计--数据处理指令

第3章 3.3 arm指令及应用程序设计--数据处理指令

ID:5908222

大小:238.00 KB

页数:38页

时间:2017-11-13

第3章 3.3 arm指令及应用程序设计--数据处理指令_第1页
第3章 3.3 arm指令及应用程序设计--数据处理指令_第2页
第3章 3.3 arm指令及应用程序设计--数据处理指令_第3页
第3章 3.3 arm指令及应用程序设计--数据处理指令_第4页
第3章 3.3 arm指令及应用程序设计--数据处理指令_第5页
资源描述:

《第3章 3.3 arm指令及应用程序设计--数据处理指令》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、3.3ARM指令集及应用程序设计3.3.1ARM指令集概述1.ARM指令分类ARM指令集总体分为6类指令数据处理指令:完成寄存器中数据的算术和逻辑运算操作。程序状态寄存器处理指令跳转指令Load/Store指令:唯一用于寄存器和存储器之间进行数据传送的指令。异常中断产生指令协处理器指令所有指令都是32bit。大多数指令都在单周期内完成。绝大多数指令都可以条件执行。load/store体系结构。指令集可以通过协处理器扩展2.ARM指令的特点3.指令格式ARM指令的基本格式如下:{}{S}{,}其中:opcode指令助记符

2、,如LDR、STR等。cond执行条件,如EQ、NE等。S是否影响CPSR寄存器的值Rd目标寄存器。Rn第1操作寄存器。operand2第2个操作数。在上面的基本格式中,“<>”符号内的项是必需的,“{}”符号内的项是可选的。例如,是指令助记符,这是必须书写的;而{}为指令执行条件,是可选项。若不书写,则使用默认条件AL(无条件执行)。一条典型的ARM指令编码格式为:Cond001OpcodeSRnRdOperand2011121516192021242527283178指令举例如下:LDRR0,[R1];读取R1地址上的存储器单元内容,执行条件ALBEQ

3、D1;分支指令,执行条件EQ,即相等则跳转到D1ADDSR1,R1,#1;加法指令,R1+1→R1,影响CPSR寄存器(S)SUBNESR1,R1,#0x10;条件执行减法运算(NE),R1-0x10=>R1,影响CPSR寄存器(S)在ARM指令中,灵活地使用第2操作数能够提高代码效率。第2个操作数的形式如下:(1)Rm——在寄存器方式下,操作数即为寄存器的数值。寄存器方式应用举例:SUBR1,R1,R2;R1-R2→R1(2)#inmed_8r——常数表达式该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。合法常量:0x3FC、0、0xF0000000、200、

4、0xF0000001。非法常量:0xlFE、511、0xFFFF、0x1010、0xF0000010。常数表达式应用举例:MOVR0,#1;R0=1ANDR1,R2,#0x0F;R2与0x0F,结果保存在R1(3)Rm,shift——寄存器移位方式将寄存器的移位结果作为操作数,但Rm值保持不变,移位方法如下:立即数控制寄存器移位,例如:MOVR0,R1,LSL#2寄存器控制寄存器移位,例如:MOVR0,R1,LSRR5大多数指令都可以选用条件后缀进行条件测试,使用指令条件后缀可实现高效的逻辑操作。条件后缀只是影响指令是否执行,不影响指令的功能。表3-5所列为指令条件码表。4.条件后缀

5、3.3.2.ARM数据处理指令ARM的数据处理指令主要完成寄存器中数据的算术和逻辑运算操作。ARM数据处理指令大致可分为6类:算术运算指令:ADDADCSUBSBCRSBRSC逻辑运算指令:ANDORREORBIC数据传送指令:MOVMVN比较指令:CMPCMN测试指令:TSTTEQ乘法指令:MULMLAUMULLUMLALSMULLSMLAL上述指令只能对寄存器操作,不能针对存储器所有的操作数要么来自寄存器,要么来自立即数,不会来自存储器。如果有结果,则结果一定是为32位宽,并且放在一个寄存器中,不会写入存储器。每一个操作数寄存器和结果寄存器都在指令中独立指出,即:ARM指令采用3

6、地址模式:Rd,Rn,Rm所有ARM数据处理指令均可选择使用S后缀,以影响状态标志。比较指令CMP、CMN、TST和TEQ不需要后缀S,它们会直接影响状态标志。ARM数据处理指令的特点(1)数据传送指令①MOV——数据传送指令MOV指令将8位图立即数或寄存器(operand2)传送到目标寄存器(Rd),可用于移位运算等操作。指令格式如下:MOV{cond}{S}Rd,operand2指令举例如下:MOVSR3,R1,LSL#2;R3=R1<<2,并影响标志位MOVPC,LR;PC=LR,子程序返回②MVN——数据非传送指令MVN指令将8位图立即数或寄存器(ope

7、rand2)按位取反后传送到目标寄存器(Rd)。因为其具有取反功能,所以可以加载范围更广的立即数。指令格式如下:MVN{cond}{S}Rd,operand2指令举例如下:MVNR1,#0xFF;R1=0xFFFFFF00MVNR1,R2;将R2取反,结果存到Rl(2)算术逻辑运算指令①ADD——加法运算指令ADD指令将operand2的数据与Rn的值相加,结果保存到Rd寄存器.指令格式如下:ADD{cond}{S}Rd,Rn,operand2指令举例如下

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

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

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