欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    嵌入式ARM系统开发与应用 第五讲.pptx

    • 资源ID:87253095       资源大小:930.34KB        全文页数:103页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式ARM系统开发与应用 第五讲.pptx

    嵌入式嵌入式ARM系统开发与应用系统开发与应用 第五讲第五讲ARM指令介绍指令介绍1 1ARMARM指令集概述指令集概述 2 2ARMARM的寻址方式的寻址方式 3 3ARMARM指令详细介绍指令详细介绍 第1页/共102页3.1 ARM指令集概述ARMARM指指令令集集是是3232位位的的,ARMARM汇汇编编程程序序的的启启动动都都是是从从ARMARM指指令令集集开开始始。所所有有的的ARMARM指指令令集集都都可可以以是是有有条条件件执执行行的的。本本节从以下三个方面介绍:节从以下三个方面介绍:指令集编码 条件执行 指令分类及指令格式 第2页/共102页一、ARM指令集编码FFARMARM指指令令集集是是以以3232位位二二进进制制编编码码的的方方式式给给出出的的,大大部部分分的的指指令令编编码码中中定定义义了了第第一一操操作作数数、第第二二操操作作数数、目目的的操操作作数数、条条件件标标志志影影响响位位以以及及每每条条指指令令所所对对应应的的不同功能实现的二进制位。不同功能实现的二进制位。FF每每条条3232位位ARMARM指指令令都都具具有有不不同同的的二二进进制制编码方式,和不同的指令功能相对应编码方式,和不同的指令功能相对应 。FF编码表如下编码表如下:第3页/共102页第4页/共102页二、条件执行FFARMARM指指令令根根据据CPSRCPSR中中的的条条件件位位自自动动判判断断是是否否执执行行指指令令,在在条条件件满满足足时时,指令执行,否则指令被忽略。指令执行,否则指令被忽略。FF在在ARMARM的的指指令令编编码码表表中中,统统一一占占用用编编码码的的最最高高四四位位3131:2828来来表表示示“条条件件码码”(即(即“cond”cond”)。)。第5页/共102页条件域表1条件码后缀标 志含 义0000EQZ置位相等0001NEZ清零不相等0010CSC置位无符号数大于或等于0011CCC清零无符号数小于0100MIN置位负数0101PLN清零正数或零0110VSV置位溢出0111VCV清零未溢出第6页/共102页条件域表2条件码后缀标 志含 义1001LSC清零Z置位无符号数小于或等于1010GEN等于V带符号数大于或等于1011LTN不等于V带符号数小于1100GTZ清零且(N等于V)带符号数大于1101LEZ置位或(N不等于V)带符号数小于或等于1110AL忽略无条件执行第7页/共102页三、指令分类及指令格式FFARM指令集可以分为六大类,数据处理指令、Load/Store指令、跳转指令、程序状态寄存器处理指令、协处理器指令和异常产生指令。FF ARM指令使用的基本格式如下:opcodeopcode condcond S Rd S Rd,RnRn,operand2operand2 第8页/共102页指令格式中符号说明FFopcode操作码;指令助记符,如LDR、STR等。FFcond 可选的条件码;执行条件,如EQ、NE等。FFS可选后缀;若指定“S”,则根据指令执行结果更新CPSR中的条件码。FFRd目标寄存器。FFRn存放第1操作数的寄存器。FFoperand2 第2个操作数。第9页/共102页指令格式举例LDR R0,R1BEQ LABEL1ADDS R2,R1,#1SUBNES R2,R1,#0X20第10页/共102页 3.2 ARM寻址方式ARMARM指令系统支持如下几种常见的指令系统支持如下几种常见的寻址方式:寻址方式:FF立即寻址立即寻址FF寄存器寻址寄存器寻址FF寄存器间接寻址寄存器间接寻址FF基址加偏址寻址基址加偏址寻址 FF堆栈寻址堆栈寻址 FF块拷贝寻址块拷贝寻址 FF相对寻址相对寻址 第11页/共102页立即寻址FF立立即即寻寻址址也也叫叫立立即即数数寻寻址址,这这是是一一种种特特殊殊的的寻寻址址方方式式,操操作作数数本本身身就就在在指指令令中中给给出出,只只要要取取出出指指令令也也就就取取到到了了操操作作数数,这这个个操操作作数数被被称称为为立立即即数数,对对应应的的寻寻址址方方式式也也就就叫叫做立即寻址。例如以下指令:做立即寻址。例如以下指令:ADDR0,R0,1/*R0R01*/ADDR0,R0,0 x3f/*R0R0 x3f*/FF 在在以以上上两两条条指指令令中中,第第二二个个源源操操作作数数即即为为立立即即数数,要要求求以以“”为为前前缀缀,对对于于以以十十六六进进制制表表示示的的立立即即 数数,还还 要要 求求 在在“”后后 加加 上上“0 x”,0 x”,二进制二进制#0b,#0b,十进制十进制#0d#0d。第12页/共102页有效立即数问题有效立即数问题 在在3232位指令编码中存放位指令编码中存放3232位立即数的方法是:位立即数的方法是:在在ARMARM数据处理指令中,当参与操作的第二操作数为数据处理指令中,当参与操作的第二操作数为立即数型时,每个立即数都是采用一个立即数型时,每个立即数都是采用一个8 8位的常数循环右位的常数循环右移偶数位而间接得到。其中循环右移的位数由一个移偶数位而间接得到。其中循环右移的位数由一个4 4位二位二进制的两倍表示,如果立即数记作进制的两倍表示,如果立即数记作 immediate,8 8位常位常数记作数记作immed_8immed_8,4 4位的循环右移值记作位的循环右移值记作rotate_immrotate_imm,有有效的立即数是由一个效的立即数是由一个8 8位的立即数循环右移偶数位得到。位的立即数循环右移偶数位得到。因此有效立即数因此有效立即数immediateimmediateimmediateimmediate可以表示成:可以表示成:=immed_8immediate=immed_8immediate=immed_8immediate=immed_8循环右移(循环右移(循环右移(循环右移(2 2 2 2rotate_immrotate_immrotate_immrotate_imm)第13页/共102页有效立即数问题有效立即数问题数据处理指令二进制编码数据处理指令二进制编码第14页/共102页寄存器寻址寄存器寻址寄存器寻址就是利用寄存器中的数值作为操作数,这寄存器寻址就是利用寄存器中的数值作为操作数,这寄存器寻址就是利用寄存器中的数值作为操作数,这寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也种寻址方式是各类微处理器经常采用的一种方式,也种寻址方式是各类微处理器经常采用的一种方式,也种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令:是一种执行效率较高的寻址方式。以下指令:是一种执行效率较高的寻址方式。以下指令:是一种执行效率较高的寻址方式。以下指令:ADDADD R0R0,R1R1,R2R2/*R0R1/*R0R1R2*/R2*/该指令的执行效果是将寄存器该指令的执行效果是将寄存器该指令的执行效果是将寄存器该指令的执行效果是将寄存器R1R1R1R1和和和和R2R2R2R2的内容相加,其的内容相加,其的内容相加,其的内容相加,其结果存放在寄存器结果存放在寄存器结果存放在寄存器结果存放在寄存器R0R0R0R0中中中中。第15页/共102页寄存器寻址寄存器寻址FF第二操作数为寄存器型的移位操作第二操作数为寄存器型的移位操作第二操作数为寄存器型的移位操作第二操作数为寄存器型的移位操作 在在ARMARM指令的数据处理指令中参与操作的第二操作数指令的数据处理指令中参与操作的第二操作数为寄存器型时,在执行寄存器寻址操作时,可以选择是为寄存器型时,在执行寄存器寻址操作时,可以选择是否对第二操作数进行移位,即否对第二操作数进行移位,即RmRm,其中其中RmRm称称为第二操作数寄存器,为第二操作数寄存器,shift用来指定移位类型(用来指定移位类型(LSLLSL,LSRLSR,ASLASL,ASRASR,RORROR或或RRXRRX)和移位位数。移位位和移位位数。移位位数可以是数可以是5 5位立即数(位立即数(#shift)或寄存器(或寄存器(RsRs)。)。在指在指令执行时将移位后的内容作为第二操作数参与运算。例令执行时将移位后的内容作为第二操作数参与运算。例如指令:如指令:ADD R3ADD R3,R2R2,R1R1,LSR#2 LSR#2 ;R3R3R2+R1R2+R14 4第16页/共102页寄存器寻址FF第二操作数移位方式第二操作数移位方式第二操作数移位方式第二操作数移位方式 LSLLSL:逻辑左移,空出的最低有效位用逻辑左移,空出的最低有效位用0 0填充。填充。LSRLSR:逻辑右移,空出的最高有效位用逻辑右移,空出的最高有效位用0 0填充。填充。ASLASL:算术左移,由于左移空出的有效位用算术左移,由于左移空出的有效位用0 0填充,因此填充,因此 它与它与LSLLSL同义。同义。ASRASR:算术右移,算术移位的对象是带符号数,移位过算术右移,算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数程中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用是正数,空出的最高有效位用0 0填充,如果是负填充,如果是负数用数用1 1填充。填充。RORROR:循环右移,移出的字的最低有效位依次填入空出循环右移,移出的字的最低有效位依次填入空出的最高有效位。的最高有效位。RRXRRX:带扩展的循环右移。将寄存器的内容循环右移带扩展的循环右移。将寄存器的内容循环右移1 1位,位,空位用原来空位用原来C C标志位填充。标志位填充。第17页/共102页寄存器寻址第18页/共102页寄存器寻址FF第二操作数的移位位数第二操作数的移位位数第二操作数的移位位数第二操作数的移位位数 移位位数可以用立即数方式或者寄存器方式给出移位位数可以用立即数方式或者寄存器方式给出,如下如下所示:所示:ADD R3ADD R3,R2R2,R1R1,LSR#2LSR#2;R3 R3 R2+R1R2+R14 4ADD R3ADD R3,R2R2,R1R1,LSR R4LSR R4;R3 R3 R2+R1R2+R12 2R4R4寄存器寄存器R1R1的内容分别逻辑右移的内容分别逻辑右移2 2位、位、R4R4位(亦即位(亦即R1R14 4、R1R12 2R4R4),),再与寄存器再与寄存器R2R2的内容相加,结果放入的内容相加,结果放入R3R3中。中。第19页/共102页寄存器间接寻址FF 寄存器间接寻址就是以寄存器中的值作为操作数的地寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:址,而操作数本身存放在存储器中。例如以下指令:LDRLDRR0R0,R1R1/*R0R1*/*R0R1*/STR STRR0R0,R1R1/*R1R0*/*R1R0*/第第一一条条指指令令将将以以R1R1的的值值为为地地址址的的存存储储器器中中的的数数据据传传送送到到R0R0中中。第第二二条条指指令令将将R0R0的的值值传传送送到到以以R1R1的的值值为为地地址址的的存存储器中。储器中。第20页/共102页基址加偏址寻址 基址变址寻址就是将寄存器(该寄存器一般称作基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式于访问某基地址附近的地址单元。采用变址寻址方式的指令又可以分为以下几种形式:的指令又可以分为以下几种形式:前变址模式前变址模式前变址模式前变址模式:LDR R0LDR R0,R1R1,44;R0R0R1R144自动变址模式自动变址模式自动变址模式自动变址模式:LDR R0LDR R0,R1R1,44!;R0R1R0R144、R1R1R1R14 4后变址模式后变址模式后变址模式后变址模式:LDR R0LDR R0,R1 R1,4 4;R0R1R0R1、R1R1R1R14 4第21页/共102页基址加偏址寻址基基址址寄寄存存器器的的地地址址偏偏移移可可以以是是一一个个立立即即数数,也也可可以以是是另另一一个个寄寄存存器器,并并且且在在加加到到基基址址寄寄存存器器前前还还可可以以经过移位操作,如下所示:经过移位操作,如下所示:LDRLDR r r0 0,r1r1,r2r2;r0r0memmem3232r1+r2r1+r2LDR r0LDR r0,r1r1,r2r2,LSL#2LSL#2;r0r0r1+r2*4r1+r2*4但但常常用用的的是是立立即即数数偏偏移移的的形形式式,地地址址偏偏移移为为寄寄存存器形式的指令很少使用。器形式的指令很少使用。第22页/共102页堆栈寻址FF堆堆栈栈是是一一种种数数据据结结构构,按按先先进进后后出出(First First In In Last Last OutOut,FILOFILO)的的方方式式工工作作,使使用用一一个个称称作作堆堆栈栈指指针针的的专专用用寄寄存存器器指指示示当当前前的的操操作作位位置置,堆堆栈栈指针总是指向栈顶。指针总是指向栈顶。FF当堆栈指针指向最后压入堆栈的数据时,称为满当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(堆栈(Full StackFull Stack),而当堆栈指针指向下一个),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(将要放入数据的空位置时,称为空堆栈(Empty Empty StackStack)。)。FF即访问存储器时,存储器的地址向高地址方向生即访问存储器时,存储器的地址向高地址方向生长,称为递增堆栈(长,称为递增堆栈(ascending stackascending stack)。)。存储存储器的地址向低地址方向生长,称为递减堆栈器的地址向低地址方向生长,称为递减堆栈(descending stackdescending stack)。)。第23页/共102页堆栈寻址四种类型的堆栈工作方式四种类型的堆栈工作方式 FF满满递递增增堆堆栈栈:堆堆栈栈指指针针指指向向最最后后压压入入的的数数据据,且且由由低低地地址址向向高高地地址址生生成。成。FF满满递递减减堆堆栈栈:堆堆栈栈指指针针指指向向最最后后压压入入的的数数据据,且且由由高高地地址址向向低低地地址址生生成。成。FF空空递递增增堆堆栈栈:堆堆栈栈指指针针指指向向下下一一个个将将要要放放入入数数据据的的空空位位置置,且且由由低低地地址向高地址生成。址向高地址生成。FF空空递递减减堆堆栈栈:堆堆栈栈指指针针指指向向下下一一个个将将要要放放入入数数据据的的空空位位置置,且且由由高高地地址向低地址生成址向低地址生成第24页/共102页堆栈寻址举例满递减满递减STMFD SPSTMFD SP!R1-R7,LRR1-R7,LRLDMFD SP!R1-R7,PCLDMFD SP!R1-R7,PC满递增满递增STMFA SPSTMFA SP!R1-R7,LRR1-R7,LRLDMFA SP!R1-R7,PCLDMFA SP!R1-R7,PC空递减空递减STMED SPSTMED SP!R1-R7,LRR1-R7,LRLDMED SP!R1-R7,PCLDMED SP!R1-R7,PC空递增空递增STMEA SP!R1-R7,LRLDMEA SP!R1-R7,PC第25页/共102页块拷贝寻址FF块块拷拷贝贝寻寻址址是是多多寄寄存存器器传传送送指指令令LDM/STMLDM/STM的的寻寻址址方方式式。LDM/STMLDM/STM指指令令可可以以把把存存储储器器中中的的一一个个数数据据块块加加载载到到多多个个寄寄存存器器中中,也也可可以以把把多多个个寄寄存存器器中中的的内内容容保保存存到到存存储储器器中中。寻寻址址操操作作中中的的寄寄存存器器可可以以是是R0-R15R0-R15这这1616个个寄寄存存器器的的子子集集或或是是所有寄存器。所有寄存器。FFLDM/STMLDM/STM指指令令依依据据其其后后缀缀名名的的不不同同其其寻寻址址的的方方式式也有很大不同,见下表。也有很大不同,见下表。第26页/共102页块拷贝寻址后缀含义块拷贝寻址后缀含义IA 操作完成后地址递增IB 操作之前地址递增DA 操作完成后地址递减DB 操作完成前地址递减FD 满递减堆栈ED 空递减堆栈FA 满递增堆栈EA 空递增堆栈第27页/共102页第28页/共102页第29页/共102页第30页/共102页第31页/共102页相对寻址 FF 与与基基址址变变址址寻寻址址方方式式相相类类似似,相相对对寻寻址址以以程程序序计计数数器器PCPC的的当当前前值值为为基基地地址址,指指令令中中的的地地址址标标号号作作为为偏偏移移量量,将将两两者者相相加加之之后后得得到到操操作作数数的的有有效效地地址址。以以下下程程序序段段完完成成子子程程序序的的调调用用和和返返回回,跳跳转转指指令令BLBL采采用用了了相对寻址方式:相对寻址方式:BLBLNEXTNEXT;跳转到子程序;跳转到子程序 ;NEXTNEXT处执行处执行NEXT:NEXT:MOVMOVPCPC,LRLR;从子程序返回;从子程序返回 第32页/共102页3.3 ARM指令详细介绍 ARM指令集总体分为以下6类:FF 数据处理指令;数据处理指令;FF Load/StoreLoad/Store指令;指令;FF 程序状态寄存器与通用寄存器之间的传送指令;程序状态寄存器与通用寄存器之间的传送指令;FF 转移指令;转移指令;FF 异常中断指令;异常中断指令;FF 协处理器指令。协处理器指令。本节以上面ARM指令集的分类方式按顺序分别对其进行详细介绍。第33页/共102页一、数据处理指令FF ARM ARM的数据处理指令主要完成寄存器中数据的的数据处理指令主要完成寄存器中数据的算术和逻辑运算操作。算术和逻辑运算操作。本节按以下内容组织:本节按以下内容组织:数据处理指令数据处理指令分类分类 数据处理指令二进制编码数据处理指令二进制编码 数据处理指令表数据处理指令表第34页/共102页数据处理指令FFARMARM数据处理指令的基本原则为数据处理指令的基本原则为 :所有的操作数都是所有的操作数都是3232位宽,或来自寄存器,或位宽,或来自寄存器,或是在指令中定义的立即数(符号或是在指令中定义的立即数(符号或0 0扩展);扩展);如果数据操作有结果,则结果为如果数据操作有结果,则结果为3232位宽,放在位宽,放在一个寄存器中。(有一个例外:长乘指令产生一个寄存器中。(有一个例外:长乘指令产生6464位的结果);位的结果);ARMARM指令中使用指令中使用“3 3地址模式地址模式”,即每一个操作,即每一个操作数寄存器和结果寄存器在指令中分别指定。数寄存器和结果寄存器在指令中分别指定。第35页/共102页数据处理指令分类分类FF 数据处理指令根据指令实现处理功能可分为数据处理指令根据指令实现处理功能可分为以下六类:以下六类:数据传送指令;数据传送指令;算术运算指令算术运算指令;逻辑运算指令;逻辑运算指令;比较指令;比较指令;测试指令;测试指令;乘法指令。乘法指令。第36页/共102页数据处理指令二进制编码二进制编码数据处理指令的二进制编码如下:数据处理指令的二进制编码如下:第37页/共102页数据处理指令汇编格式汇编格式FFARMARM数据处理指令使用两个源操作数和一个目的寄数据处理指令使用两个源操作数和一个目的寄存器(存器(RdRd)的的“3 3地址模式地址模式”,一个源操作数,一个源操作数(RnRn)总是寄存器,第二个被称为总是寄存器,第二个被称为“灵活的第二操灵活的第二操作数作数operand2operand2”,它可以是寄存器、移位后的寄存器它可以是寄存器、移位后的寄存器或立即数。如果第二操作数是寄存器或立即数。如果第二操作数是寄存器RmRm,它的移位它的移位类型可以是类型可以是LSLLSL,LSRLSR,ASLASL,ASRASR,RORROR或或RRXRRX中中的任意一种的任意一种 ;移位的位数可以是立即数,也可以是;移位的位数可以是立即数,也可以是寄存器的内容。寄存器的内容。FF汇编格式汇编格式汇编格式汇编格式 S Rdop S Rd,Rn Rn,#32#S Rdop S Rd,Rn Rn,Rm Rm,第38页/共102页数据处理指令指令表指令表数据处理指令的详细列表如下:数据处理指令的详细列表如下:操作码24:21助记符意义效果0000AND逻辑位与Rd=Rn AND Op20001EOR逻辑位异或Rd=Rn EOR Op20010SUB减Rd=Rn-Op20011RSB反向减Rd=Op2 Rn0100ADD加Rd=Rn+Op20101ADC带进位加Rd=Rn+Op2+C0110SBC带进位减Rd=Rn-Op2+C-10111RSC反向带进位减Rd=Op2-Rn+C-11000TST测试根据Rn AND Op2设置条件码1001TEQ测试相等根据Rn EOR Op2设置条件1010CMP比较根据Rn-Op2设置条件码1011CMN负数比较根据Rn+Op2设置条件码1100ORR逻辑位或Rd=Rn OR Op21101MOV传送Rd=Op21110BIC位清零Rd=Rn AND NOT Op21111MVN求反Rd=NOT Op2第39页/共102页数据处理指令ADDADD条件S,Rd=Rn+op_2 ADD 将把两个操作数加起来,把结果放置到目的寄存器中。操作数 Rn 是一个寄存器,操作数 op 2可以是一个寄存器,被移位的寄存器,或一个立即值:ADDS R0,R1,R2;R0=R1+R2 影响标志位ADD R0,R1,#256;R0=R1+256 ADD R0,R2,R3,LSL#1;R0=R2+(R3 1)第40页/共102页数据处理指令-ADCADCADC条件条件S,S,Rd=Rn+op_2+carry ADC Rd=Rn+op_2+carry ADC 将把两个操作数加起来,并把结果放置到目的寄存器将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,可以做比中。它使用一个进位标志位,可以做比 32 32 位大的加法。位大的加法。下列例子将加两个下列例子将加两个 128 128 位的数。位的数。128 128 位结果位结果:寄存器寄存器 0 0、1 1、2 2、和、和 3 3第一个第一个 128 128 位数位数:寄存器寄存器 4 4、5 5、6 6、和、和 7 7第二个第二个 128 128 位数位数:寄存器寄存器 8 8、9 9、1010、和、和 1111。ADDS R0,R4,R8;ADDS R0,R4,R8;加低端的字加低端的字 ADCS R1,R5,R9;ADCS R1,R5,R9;加下一个字,带进位加下一个字,带进位 ADCS R2,R6,R10;ADCS R2,R6,R10;加第三个字,带进位加第三个字,带进位ADCS R3,R7,R11;ADCS R3,R7,R11;加高端的字,带进位加高端的字,带进位 如果要做这如果要做这样的加法,不要忘记设置样的加法,不要忘记设置 S S 后缀来更改进位标志。后缀来更改进位标志。第41页/共102页数据处理指令-SUBSUB条件S,Rd=Rn-op_2 用操作数 Rn减去操作数 op_2,把结果放置到目的寄存器中。操作数 Rn 是一个寄存器,操作数 op_2 可以是一个寄存器,被移位的寄存器,或一个立即值:SUBS R0,R1,R2;R0=R1-R2,影响标志位SUB R0,R1,#256;R0=R1-256 SUB R0,R2,R3,LSL#1;R0=R2-(R3 1)第42页/共102页数据处理指令-SBCSBC:带借位的减法带借位的减法SBC条件S,Rd=Rn-op_2-!carry SBC 做两个操作数的减法,把结果放置到目的寄存器中。它使用进位标志来表示借位,这样就可以做大于 32 位的减法。SUB 和 SBC 生成进位标志的方式不同于常规,如果需要借位则清除清除进位标志。所以,指令要对进位标志进行一个非非操作-在指令执行期间自动的反转此位。SUBS R3,R6,R9SBCS R4,R7,R10SBC R5,R8,R11第43页/共102页数据处理指令-RSBRSB:反向减法反向减法RSB条件S,Rd=op_2-op_1 用操作数 op_2减去操作数 Rn,把结果放置到目的寄存器中。操作数 Rn 是一个寄存器,操作数 op_2可以是一个寄存器,被移位的寄存器,或一个立即值:RSB R0,R1,R2;R0=R2-R1 RSB R0,R1,#256;R0=256-R1 RSB R0,R2,R3,LSL#1;R0=(R3 1)-R2第44页/共102页数据处理指令-RSCRSC:带借位的反向减法带借位的反向减法RSC条件S,Rd=op_2-Rn-!carry 同于 SBC,但倒换了两个操作数的前后位置。第45页/共102页乘法指令乘法指令 ARMARM乘乘法法指指令令完完成成两两个个寄寄存存器器中中数数据据的的乘乘法法。按按产产生生结结果果的的位位宽宽一一般般分分为为两两类类:一一类类是是两两个个3232位位二二进进制制数数相相乘乘的的结结果果是是6464位位,另另一一类类是是两两个个3232位位二二进进制制数数相相乘乘,仅仅保保留留最最低低有有效效3232位位。这这两两种种类类型型都都有有“乘法累加乘法累加”的变的变形形,如下表所示:,如下表所示:操作码23:21助记符意义效果000MUL乘(32位结果)Rd(RmRs)31:0001MLA乘累加(32位结果)Rd(RmRs+Rn)31:0100UMULL无符号数长乘RdHi:RdLoRmRs101UMLAL无符号长乘累加RdHi:RdLo+=RmRs110SMULL有符号数长乘RdHi:RdLoRmRs111SMLAL有符号数长乘累加RdHi:RdLo+=RmRs第46页/共102页乘法指令二进制编码二进制编码FF二进制编码二进制编码二进制编码二进制编码 FF说明说明说明说明对于对于3232位乘积结果指令,位乘积结果指令,RdRd为结果寄存器,为结果寄存器,RmRm、RsRs、RnRn为操作数寄存器。为操作数寄存器。对于对于6464位乘积结果指令,位乘积结果指令,RdLoRdLo、RdHiRdHi为结果寄存器,为结果寄存器,“RdHi:RdLoRdHi:RdLo”是由是由RdHiRdHi(最高有效最高有效3232位)和位)和RdLoRdLo(最低最低有效有效3232位)连接形成位)连接形成6464位乘积结果,位乘积结果,RmRm、RsRs为操作数寄为操作数寄存器。存器。第47页/共102页乘法指令汇编格式汇编格式FF产生最低有效产生最低有效产生最低有效产生最低有效32323232位乘积的指令:位乘积的指令:位乘积的指令:位乘积的指令:MULS RdMULS Rd,Rm Rm,Rs RsMULAS RdMULAS Rd,Rm Rm,Rs Rs,Rn RnFF产生产生产生产生64646464位乘积的指令位乘积的指令位乘积的指令位乘积的指令:S RdHimulS RdHi,RdLo RdLo,Rm Rm,Rs Rs在此在此 mul是是6464位乘法类型(位乘法类型(UMULLUMULL、UMLALUMLAL、SMULLSMULL、SMLALSMLAL)。)。第48页/共102页数据处理指令-MULMUL:乘法乘法MUL条件S,Rd=Rn*op_2 MUL 提供 两个寄存器之间的32 位整数乘法。给出的所有操作数、和目的寄存器必须为简单的寄存器。不能对操作数 2 使用立即值或被移位的寄存器。目的寄存器和操作数 1 必须是不同的寄存器。不能指定 R15 为目的寄存器。MUL R0,R1,R2 R0=R1*R2第49页/共102页数据处理指令-MLAMLA:带累加的带累加的32位乘法位乘法MLA条件S,dest=(op_1*op_2)+op_3 MLA 的行为同于 MUL,但它把操作数 3 的值加到结果上。这在求总和时有用。MLA R10,R0,R1,R10/R10=R0*R1+R10第50页/共102页数据处理指令64位长乘UMULL、UMLAL、SMULL、SMLAL 条件S RdHi,RdLo,Rm,Rs第51页/共102页AND:逻辑与逻辑与AND条件S,dest=op_1 AND op_2 AND 将在两个操作数上进行逻辑与,把结果放置到目的寄存器中;对屏蔽位很有用。操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即值:AND R0,R0,#3;R0=保持 R0 的位 和 1,丢弃其余的位。第52页/共102页ORR:逻辑或逻辑或ORR条件S,dest=op_1 OR op_2 OR 将在两个操作数上进行逻辑或,把结果放置到目的寄存器中;对设置特定的位有用。操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即值:ORR R0,R0,#3;设置 R0 中位 0 和 1 第53页/共102页EOR:逻辑异或逻辑异或EOR条件S,dest=op_1 EOR op_2 EOR 将在两个操作数上进行逻辑异或,把结果放置到目的寄存器中;对反转特定的位有用。操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即值:EOR R0,R0,#3;反转 R0 中的位 0 和 1 第54页/共102页BIC:位清除位清除BIC条件S,dest=op_1 AND(!op_2)BIC 是在一个字中清除位的一种方法,与 OR 位设置是相反的操作。操作数 2 是一个 32 位位掩码(mask)。如果如果在掩码中设置了某一位,则清除这一位。未设置的掩码位指示此位保持不变。BIC R0,R0,#%1011;清除 R0 中的位 0、1、和 3。保持其余的不变。第55页/共102页移位指令LSL、LSR、ASL、ASR、ROR、RRXARM 处理器组建了可以与数据处理指令(ADC、ADD、AND、BIC、CMN、CMP、EOR、MOV、MVN、ORR、RSB、SBC、SUB、TEQ、TST)一起使用的桶式移位器(barrel shifter)。你还可以使用桶式移位器影响在 LDR/STR 操作中的变址值。移位操作在 ARM 指令集中不作为单独的指令使用,它是指令格式中是一个字段,在汇编语言中表示为指令中的选项。第56页/共102页比较指令CMP:CMP:比较比较比较比较CMPCMP条件条件P,P,status=op_1-op_2 status=op_1-op_2 CMP CMP 允许把一个寄存器的内容如另一个寄存器的内容允许把一个寄存器的内容如另一个寄存器的内容或立即值进行比较,更改状态标志来允许进行条件执或立即值进行比较,更改状态标志来允许进行条件执行。它进行一次减法,但不存储结果,而是正确的更行。它进行一次减法,但不存储结果,而是正确的更改标志。标志表示的是操作数改标志。标志表示的是操作数 1 1 比操作数比操作数 2 2 如何如何(大小大小等等)。如果操作数。如果操作数 1 1 大于操作操作数大于操作操作数 2 2,则此后的有,则此后的有 GT GT 后缀的指令将可以执行。不需要显式的指定后缀的指令将可以执行。不需要显式的指定 S S 后后缀来更改状态标志缀来更改状态标志,如果指定了它则被忽略。如果指定了它则被忽略。CMP R1,R2CMP R1,R2MOVNE R0,#0 xff MOVNE R0,#0 xff 第57页/共102页比较指令CMN:取反比较取反比较CMN条件P,status=op_1-(-op_2)CMN将目的操作数和源操作数相加,根据结果更新条件码标志。除了结果丢弃外,相当于执行ADDS指令 CMN R0,#1;相当于和-1比较第58页/共102页测试指令TST:测试位测试位TST条件P,Status=op_1 AND op_2 TST 类似于 CMP,不产生放置到目的寄存器中的结果。而是在给出的两个操作数上进行操作并把结果反映到状态标志上。使用 TST 来检查是否设置了特定的位。操作数 1 是要测试的数据字而操作数 2 是一个位掩码。经过测试后,如果不匹配则设置 Zero 标志,否则清除它。象 CMP 那样,不需要指定 S 后缀。TST R0,#0 x3F8 第59页/共102页测试指令TEQ条件P,Status=op_1 EOR op_2 TEQ 类似于 TST。区别是 EOR 而不是 AND。这提供了一种查看两个操作数是否相同而又不影响进位标志(不象 CMP 那样)的方法。第60页/共102页数据传送指令MOVMOV条件条件S,S,dest=op_1 dest=op_1 MOV MOV 从另一个寄存器、被移位的寄存器、或一个立即从另一个寄存器、被移位的寄存器、或一个立即值装载一个值到目的寄存器。可以指定相同的寄存器值装载一个值到目的寄存器。可以指定相同的寄存器来实现来实现 NOP NOP 指令的效果,还可以专门移位一个寄存器指令的效果,还可以专门移位一个寄存器:MOV R0,R0;R0=R0.NOP MOV R0,R0;R0=R0.NOP 指令指令 MOV R0,R0,LSL#3;R0=R0*8 MOV R0,R0,LSL#3;R0=R0*8 如果如果 R15 R15 是目的寄存器,将修改程序计数器或标志。是目的寄存器,将修改程序计数器或标志。用于返回到调用代码,方法是把连接寄存器的内容传用于返回到调用代码,方法是把连接寄存器的内容传送到送到 R15:R15:MOV PC,R14;MOV PC,R14;退出到调用者退出到调用者 MOVS PC,R14;MOVS PC,R14;退出到调用者并恢复标志位退出到调用者并恢复标志位 第61页/共102页数据传送指令MVN:传送取反的值传送取反的值MVN条件S,dest=!op_1 MVN 从另一个寄存器、被移位的寄存器、或一个立即值装载一个值,按位取反置入到目的寄存器。MVN R0,#4;MVN R0,#0;第62页/共102页二、Load/Store指令 FFARMARM处处理理器器是是Load/storeLoad/store型型的的,即即它它对对数数据据的的操操作作是是通通过过将将数数据据从从存存储储器器加加载载到到片片内内寄寄存存器器中中进进行行处处理理,处处理理完完成成后后的的结结果果经经过过寄寄存存器器存存回回到到存存储储器器中中,以以加加快快对对片片外外存存储储器器进进行行数数据据处处理理的的执执行行速速度度。ARMARM的的数数据据存存取取指指令令Load/StoreLoad/Store是是唯唯一一用用于于寄寄存存器器和和存存储储器之间进行数据传送的指令。器之间进行数据传送的指令。FFARMARM指令集中有三种基本的数据存取指令:指令集中有三种基本的数据存取指令:单寄存器的存取指令(单寄存器的存取指令(LDRLDR,STRSTR)多寄存器存取指令(多寄存器存取指令(LDMLDM,STMSTM)单寄存器交换指令(单寄存器交换指令(SWPSWP)第63页/共102页单寄存器的存取指令 单单寄寄存存器器存存取取指指令令是是ARMARM在在寄寄存存器器和和存存储储器器间间传传送送单单个个字字节节和和字字的的最最灵灵活活方方式式。它它支支持持几几种种寻寻址址模模式式,包包括括立立即即数数和和寄寄存存器器偏偏移移、自自动动变变址址和和相相对对PCPC的的寻寻址址。根根据据传传送送数数据据的的类类型型不不同同,单单个个寄寄存存器器存存取取指指令令又又可可以分为以下两类:以分为以下两类:单字和无符号字节的数据传送指令单字和无符号字节的数据传送指令 半字和有符号字节的数据传送指令半字和有符号字节的数据传送指令第64页/共102页单字和无符号字节的数据传送指令单字和无符号字节的数据传送指令LDR从内存中

    注意事项

    本文(嵌入式ARM系统开发与应用 第五讲.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开