ARM汇编语言


ARM的条件码域
大部分ARM指令都可以条件执行,也就是根据CPSR中的条件标志位决定是否执行该指令。当条件满足时执行,当条件不满足时该指令被当做一条NOP指令。


(一)跳转指令
B        跳转指令
BL      保存返回地址的跳转指令
BX      带状态切换的跳转指令
BLX    保存返回地址和状态切换的跳转指令

B、BL和BLX(1)后面跟地址标号。BLX(1)为无条件执行指令
BX和BLX(2)后面跟寄存器

例:B  Lable
         BX  R0


(二)数据处理指令
数据处理指令又分为三类:数据传送指令,如MOV;  算数逻辑运算指令,如ADD,SUB,AND等;  比较指令,如TST等
比较指令不保存运算结果,只更新CPSR中相应的条件标志位

默认情况下,数据处理指令不影响条件标志位,只有比较指令能够影响CPSR中的条件标志位。但可以通过添加S来影响条件标志位。如ADDS。

数据传送指令

 

MOV

MOV  R1,#0x6    ;R1=0x6

MOV  R0,R1       ;R0=R1

MOV  R3,R1,LSL #2   ;R3=R1<<2

MOV  R3,R1,LSL R2   ;R3=R1<<R2

数据传送指令

MVN

MVN  R1,#0x6     ;R1=~0x6

MVN  R0,R1       ;R0=~R1

MVN  R3,R1,LSL #2   ;R3=~(R1<<2)

MVN  R3,R1,LSL R2   ;R3=~(R1<<R2)

数据求反传送指令

算术指令

 

ADD

ADD  R1,R1,#0x6   ;R1=R1 + 0x6

ADD  R1R1R2     ;R1=R1 + R2

ADD  R3,R1,R2,LSL #2   ;R3=R1 + R2<<2

ADD  R3,R1,R2,LSL R6   ;R3=R1 + R2<<R6

加法指令

ADC

ADC  R1,R1,#0x6   ;R1=R1 + 0x6 + C

ADC  R1,R1,R2     ;R1=R1 + R2 + C

ADC  R3,R1,R2,LSL #2   ;R3=R1 + R2<<2 + C

ADC  R3,R1,R2,LSL R6   ;R3=R1 + R2<<R6 + C

带进位加法指令

注:因为是带进位的,所以还要加上CPSR中的C条件标志位的值

SUB

SUB  R1,R1,#0x6   ;R1=R1 - 0x6

SUB  R1,R1,R2     ;R1=R1 - R2

SUB  R3,R1,R2,LSL #2   ;R3=R1 - R2<<2

SUB  R3,R1,R2,LSL R6   ;R3=R1 - R2<<R6

减法指令

SBC

SBC  R1,R1,#0x6   ;R1=R1 - 0x6 - !C

SBC  R1,R1,R2     ;R1=R1 - R2 - !C

SBC  R3,R1,R2,LSL #2   ;R3=R1 - R2<<2 - !C

SBC  R3,R1,R2,LSL R6   ;R3=R1 - R2<<R6 - !C

带借位的减法指令

注:因为是带借位的,所以还要再减去CPSR中的C条件标志位的反码

RSB

RSB  R1,R1,#0x6   ;R1=0x6 - R1

RSB  R1,R1,R2    ;R1=R2 - R1

RSB  R3,R1,R2,LSL #2   ;R3=R2<<2 – R1

RSB  R3,R1,R2,LSL R6   ;R3=R2<<R6 – R1

逆向减法指令

RSC

RSC  R1,R1,#0x6   ;R1=0x6 – R1 - !C

RSC  R1,R1,R2     ;R1=R2 - R1 - !C

RSC  R3,R1,R2,LSL #2   ;R3=R2<<2 - R1 - !C

RSC  R3,R1,R2,LSL R6   ;R3=R2<<R6 - R1 - !C

带借位的逆向减法指令

注:因为是带借位的,所以还要再减去CPSR中的C条件标志位的反码

逻辑指令

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值