常用的ARM汇编指令汇总(一)

  我们常用的ARM汇编指令,下面写的cond代表条件码,S代表影响CPSR寄存器,Rd代表目标寄存器,operand代表寄存器的地址或者立即数等等。

  (1)分支跳转语句

    b{l}{cond}  <target>:

    ①相当于C语言中的goto,跳转范围是±32M。

    ②若使用bl则会在执行完函数之后跳转回该地址。

  (2)数据操作指令

    LSL 逻辑左移 ASL 算术左移 LSR 逻辑右移 ASR 算术右移 ROR 循环右移 RRX 带扩展的循环右移

    eg:MOV R0, R1, LSL #2   将R1的内容左移两位,然后赋值给R0

      顺便补充一下,逻辑,算数,循环移位的区别:

      逻辑左移时,最高位丢失,最低位补0;

      逻辑右移时,最高位补0,最低位丢失;

      算术左移时,依次左移一位,尾部补0,最高的符号位保持不变;

      算术右移时,依次右移一位,尾部丢失,符号位右移后,原位置上复制一个符号位;

      循环左移时,将最高位重新放置最低位;

      循环右移时,将最低位重新放置最高位;

  (3)数据传输指令

    mov{cond{s} <Rd>  <operand>

  (4)算数运算指令

    add/adc{cond}{s} <Rd>, <Rn>, <operand>

              sub/sbc/rsb{cond}{s} <Rd>, <Rn>, <operand>

    eg:ADD R0,R1,R2   R0=R1+R2 

  (5)比较测试指令

    cmp{cond} <Rn>, <operand>:比较俩个寄存器的值是否相等

    tst{cond} <Rn>, <operand>:测试某个位是否为1

    teq{cond} <Rn>, <operand>:测试两个数据是否相等

  

    

猜你喜欢

转载自www.cnblogs.com/nfsn/p/9288777.html