ARM——汇编指令集(一)

目录

数据处理指令

MOV指令

ADD指令

SUB指令

 MUL指令

CMP指令

ORR逻辑或

BIC指令

跳转指令

条件执行

 条件码

程序举例与解析


数据处理指令

MOV指令

MOV  <Rd> , <shifter_operand>

含义:shifter_operand 送到寄存器 Rd

举例:

MOV R0,R1          /*R0=R1*/
MOV R0,R1,LSL#3    /*R0=(R1<<3) */

ADD指令

ADD   <Rd> ,<Rn>, <shifter_operand>

含义:Rd=Rn+shifter_operand

举例:

ADD R0,R1,R2               /*R0=R1+R2*/
ADD R0,R1,#256             /*R0=R1+256*/
ADD R0,R2,R3,LSL#1         /*R0=R2+(R3<<1)*/

SUB指令

SUB  <Rd>,<Rn>,<shifter_operand>

含义:Rd=Rn-shifter_operand

举例

SUB R0,R1,R2           /*R0=R1-R2*/
SUB R0,R1,#256         /*R0=R1-256*/
SUB R0,R2,R3,LSL#1     /*R0=R2-(R3<<1)*/

 MUL指令

MUL <Rd>,<Rm>,<Rs>

含义:32位乘法指令将Rm和Rs中的值相乘,结果的最低32位保存到寄存器Rd中

举例

MUL R1,R2,R3      /*R1=R2*R3*/

CMP指令

CMP <Rn>,<shifter_operand>

含义:Rn-shifter_operand,进行比较。

CMP R1,#10       /*R1-10,根据相减的结果更新CPSR */
CMP R1,R2        /*R1-R2,根据相减的结果更新CPSR */

ORR逻辑或

ORR <dest>, <op 1>, <op 2>

含义:dest = op_1   OR  op_2

举例

ORR     R0, R0, #3             /* 使 R0 位0与位1置位*/

BIC指令

BIC  <dest>, <op 1>, <op 2>

含义: dest = op_1 AND (!op_2)

功能:置1的位清零

举例

BIC     R0, R0, #OXB         /* 使 R0 位0、1、3 清零*/

跳转指令

B{L} <target_address>

举例:

B LABLE
ADD R1,R2,#4
ADD R3,R2,#8
SUB R3,R3,R1
LABLE:
   SUB R1,R2,#8

条件执行

ARM指令可以通过添加适当的条件码前缀达到条件执行的目的

 条件码

助记符后缀标志含义
EQZ 置1=
NEZ清0
GTZ清零(且N=V)>
LTN≠V<
GEN=V
LEN≠V

程序举例与解析

if(a==0) func(1);

cmp r1,#0   /*r1与0做比较*/
moveq r0,#1 /*如果 r1 = 0 则把 1赋给 r0 */
bleq func   /*如果 r1 = 0 跳转至 func 函数*/
func:


if(a==0) x=0;
if(a>0) x=1;

cmp,r0,#0   /* r0 与 0 做比较  */
moveq r1,#0 /* 如果 r0 = 0 把 0 赋给 r1 */
movgt r1,#1 /* 如果 r0 > 0 把 1 赋给 r1*/ 


if(a==4||a==10) x=0;

cmp r0,#4    /* r0 与 4 作比较 */
cmpne r0,#10 /* 如果 r0 ≠ 4  让 r0 与 10 做比较 */
moveq r1,#0  /* 如果 r0 = 4 或 r0 = 10 将 0 赋给 r1 */ 
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白变形计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值