×
单片机 > 单片机程序设计 > 详情

ARM汇编指令集3

发布时间:2020-12-25 发布时间:
|

常用ARM指令1:数据处理指令

    

•数据传输指令  mov mvn

      mov   r1,  r0        @两个寄存器之间数据传递

      mov       r1,  #0xff   @将立即数赋值给寄存器

mov 和mvn用法一样,区别是mov是原封不动的传递,而mvn是按位取反后传递

 

•算术指令  add sub rsb adc sbc rsc 

     and    逻辑与

     orr     逻辑或

     eor     逻辑异或

 

•逻辑指令  and orr eor bic

    bic     位清零

    bic   r0,r1,#0x1f      @将r1的数的bit0 到bit4清零后赋值给r0

 

•比较指令  cmp cmn tst teq   (比较指令重在过程不在乎结果)

   cmp    r0, r1         @等价于sub   r2, r0,r1  (r2 = r0-r1)

   cmn    r0, r1         @等价于 add r0,r1

   tst      r0,#0x08   @测试bit_3是否为0

   bne    suspendup  @上一条指令指令是否成立 成立就跳转到 标签suspendup

   tst      r0,#0x0f    @测试r0的bit0-bit3是否都为0

 

•乘法指令  mvl mla umull umlal smull smlal

 

•前导零计数  clz

比较指令用来比较2个寄存器中的数
注意:比较指令不用后加s后缀就可以影响cpsr中的标志位。
常用ARM指令2:cpsr访问指令 :mrs & msr

•mrs用来读psr(包括cpsr、spsr),msr用来写psrpsr(包括cpsr、spsr)

      cpsr和spsr的区别和联系:cpsr程序状态寄存器,整个SOC中只有1个;而spsr有5个,分别在5种异常模式下,作用是当普通模式进入异常模式时,

      用来保存之前普通模式下的cpsr,已在返回普通模式时恢复原来的spsr。

•CPSR寄存器比较特殊,需要专门的指令访问,这就是mrs和msr。

 

常用ARM指令3:跳转(分支)指令:b & bl & bx

•b 直接跳转(就没打开算返回)

•bl branch and link,跳转前把返回地址放入lr中,以便返回,以便用于函数调用

•bx跳转同时切换到ARM模式,一般用于异常处理的跳转。

 

常用ARM指令4:访存指令:ldr/str &  ldm/stm & swp

•单个字/半字/字节访问 ldr/str

•多字批量访问  ldm/stm

•swp r1, r2, [r0]

•swp r1, r1, [r0](内存和寄存器交换数据)

 

ARM汇编中的立即数(合法立即数与非法立即数)

•ARM指令都是32位,除了指令标记和操作标记外,本身只能附带很少位数的立即数。因此立即数有合法和非法之分。

•合法立即数:经过任意位数的移位后非零部分可以用8位表示的即为合法立即数

  如:合法立即数:0x000000ff、0x00ff0000

       非合法立即数:0x000001ff

 

常用ARM指令5:软中断指令  :swi(software interrupt)

•软中断指令用来实现操作系统中系统调用

关键字:ARM  汇编指令集  数据处理 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式