欢迎来到天天文库
浏览记录
ID:40049249
大小:753.50 KB
页数:69页
时间:2019-07-18
《《常用arm指令》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式电子工程师1ARM指令集2课程目的熟悉ARM的常用指令掌握ARM常用指令的编写方法读懂ARM各类指令3课程内容跳转指令数据处理指令乘法指令状态寄存器访问指令Load/Store内存访问指令移位指令协处理器指令4课程内容跳转指令数据处理指令乘法指令状态寄存器访问指令Load/Store内存访问指令移位指令协处理器指令5跳转指令跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转:—直接向程序计数器PC写入跳转地址值通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转在跳转之前结合使用MOVr10,PC等类似指令,可以保存将来的返回地址值
2、,从而实现在4GB连续的线性地址空间的子程序调用—使用专门的跳转指令B、BL、BLX等6跳转指令ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令:—B跳转指令—BL带返回的跳转指令—BLX带返回和状态切换的跳转指令—BX带状态切换的跳转指令7跳转指令1、B指令格式:B{条件}目标地址B指令是最简单的跳转指令。一旦遇到一个B指令,ARM处理器将立即跳转到给定的目标地址,从那里继续执行注意存储在跳转指令中的实际值是相对当前PC值的一个偏移量,而不是一个绝对地址例:BLabel;程序无条件跳转到标号Label处执行CMPR1,#0BEQLabel
3、;当CPSR寄存器中的Z条件码置位时,程序跳转到标号Label处执行8跳转指令2、BL指令格式:BL{条件}目标地址BL在跳转之前,会在寄存器R14中保存PC的当前内容,然后再跳转到相应的标号处执行可以通过将R14的内容重新加载到PC中,来返回到跳转指令之后的那个指令处执行例:BLLabel……label:……movpcr149跳转指令3、BX指令格式:BX{条件}目标地址带状态切换的跳转指令,跳转到指令中所指定的目标地址处执行。目标地址处的指令既可以是ARM指令,也可以是Thumb指令4、BLX指令格式:BLX目标地址BLX指令从ARM指令集跳转到指令中所指定的目标地址,并将处理器的工
4、作状态由ARM状态切换到Thumb状态,该指令同时将PC的当前内容保存到寄存器R14中子程序的返回可以通过将寄存器R14值复制到PC中来完成10课程内容跳转指令数据处理指令乘法指令状态寄存器访问指令Load/Store内存访问指令移位指令协处理器指令11数据处理指令数据处理指令根据指令实现处理功能可分为以下五类:数据传送指令比较指令测试指令算术运算指令逻辑运算指令12数据传送指令数据处理指令包括:—MOV数据传送指令—MVN数据取反传送指令—CMP比较指令—CMN反值比较指令—TST位测试指令—TEQ相等测试指令—ADD加法指令—ADC带进位加法指令—SUB减法指令—SBC带借位减法指令
5、—RSB逆向减法指令—RSC带借位的逆向减法指令—AND逻辑与指令—ORR逻辑或指令—EOR逻辑异或指令—BIC位清除指令131、MOV指令MOV指令的格式为:MOV{条件}{S}目的寄存器,源操作数MOV指令可完成从另一个寄存器、被移位的寄存器或将一个立即数加载到目的寄存器。其中S选项决定指令的操作是否影响CPSR中条件标志位的值例:MOVR1,R0;将寄存器R0的值传送到寄存器R1MOVEQPC,R14;根据Z标志位,决定是否将R14的值传送到PCMOVSR1,R0,LSL#3;将寄存器R0的值左移3位后传送到R1,并影响标志位数据传送指令142、MVN指令MVN指令的格式为:MVN
6、{条件}{S}目的寄存器,源操作数与MOV指令不同之处是在传送之前按位被取反了,即把一个被取反的值传送到目的寄存器中MVNR0,#0;将立即数0取反传送到寄存器R0中,完成后R0=-1数据传送指令153、CMP指令CMP指令的格式为:CMP{条件}操作数1,操作数2CMP指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更新CPSR中条件标志位的值。该指令进行一次减法运算,但不存储结果,只更改条件标志位CMPR1,R0;将寄存器R1的值与寄存器R0的值相减,并根据结果设置CPSR的标志位CMPR1,#100;将寄存器R1的值与立即数100相减,并根据结果设置CPSR的标
7、志位比较指令16比较指令4、CMN指令CMN指令的格式为:CMN{条件}操作数1,操作数2CMN指令用于把一个寄存器的内容和另一个寄存器的内容或立即数取负后进行比较,同时更新CPSR中条件标志位的值。该指令实际完成操作数1和操作数2相加,并根据结果更改条件标志位CMNR1,R0;将寄存器R1的值与寄存器R0的值相加,并根据结果设置CPSR的标志位CMNR1,#100;将寄存器R1的值与立即数100相加,并根据结果设置CPSR的标志位
此文档下载收益归作者所有