ARM汇编指令集2 --常用的汇编指令

ARM汇编指令集2 --常用的汇编指令

                                            ---参考朱有鹏大讲坛

1、数据传输和跳转指令详解

(1)数据传输指令           mov      mvn

(2)算术指令                   add      sub     rsb    adc    sbc    rsc

(3)逻辑指令                   and      Orr     eor(异或)     bic(位清除指令)

(4)比较指令                   cmp     cmn   tst    teq

(5)乘法指令                   mvl       mal    umull    umlal

(6)前导0计数                clz


1.1、mov

 mov   r1 ,#0xff                 将立即数0xff传递到r1

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

mvn传递0变为1,传1就变为0

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

mvn  r0,r1 后,r0 = 0xffffff00



1.2、bic   r0,r1,#0x1f;                  将r1中的数的bit 0 到 bit 4清零后赋值给r0

1.3、比较指令:

cmp   /   TST  /TEQ


注意:比较指令不同后加s后缀就可以影响CPSR中的标志位。

比较指令跟我们普通的指令是不一样的。重在过程,不重结果。


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

Cmn   r0,r1  等价于  add   r0 ,r1看他们是不是互为补数的


TST  R0,#0x08     测试bit_3是否为0

TST  R0,  #0x0f       测试r0的bit0~bit3是否全为0

BNE   sus;                BNE指令是不相等(或者不等于0)跳转指令


总结:

TST位测试指令

TEQ{条件}{P} <op1> <op2>

Status = op1 EOR op2



2、CPSR访问指令

mrs & msr


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

 

3、跳转指令(分支)

b & bl & bx

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

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

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


4、访存指令,访问内存的指令

ldr/str  &  ldm/stm   &swp


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

多字批量访问 ldm/stm

swp r1,r2,[r0]

swp r1,r1,[r0]


5、ARM汇编中的立即数

(1)合法立即数与非法立即数

(2)ARM指令都是32位的,除了指令标记和操作标记外,本身只能附带很少位数

的立即数,因此立即数有合法和非法之分。

(3)合法立即数:经过任意位数的移位后非0部分可以用8位

表示的即为合法立即数。


6、软中断的指令

swi  (software interrupt)

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












  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值