ARM汇编指令集2

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

数据传输指令:

mov

    mov r1,r2

    mov r1,#0xff01

mvn

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

    如r1=0xff,然后mov r0,r1后,r0=0xff,

    但 mvn r0,r1时,r0=0xffffff00.


算术运算指令

 

逻辑指令

    and 逻辑与

    or 逻辑或

    eor 逻辑异或

    bic 位清除指令  bic r0,r1,#0x1f将r1中的数的bit0到bit4清零后赋值给r0


比较指令:比较过程中总是会影响CPSR的标志位

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

    cmn    cmn r0 r1 等价于add r0,r1

    tst    tst r0,#0xc 比较bit3,bit2是否全为0。作测试位

    teq        测试等价,不相等为1,相等为0

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


常用ARM指令2: cpsr访问指令  mrs & msr

    cpsr和spsr的区别和联系:cpsr是程序状态寄存器,整个Soc只有一个;而spsr有5个,分别在5中异常模式下,作用是当从普通模式进入异常模式时,用来保存之前普通模式下的cpsr的,以在返回普通模式时,恢复原来的cpsr。

mrs(mov register,source)用来读psr,msr用来写psr。   


常用ARM指令3:跳转(分支)指令

    b: 直接跳转;(就没打算返回)

    bl:branch and link,跳转前把返回地址放入lr中,以便返回,以便于函数调用;(打算返回)

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


常用ARM指令4:访存指令

    ldr/str & ldm/stm&swp

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

    多字批量访问  ldm/stm

    swap r1, r2,[r0] : 把[r0]内存里的内容写到r1,而把r2内容写到[r0]地址中。

    swp r1,r1,[r0]:将 [r0]地址的内容 与 r1 寄存器的内容互换。


合法立即数: 0x000000ff  0xf000000f

非法立即数: 0x000001ff

 

软中断指令 swi(software interrupt):软终端指令用来实现操作系统中的系统调用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值