ARM处理器汇编指令

本文详细介绍了ARM处理器的汇编指令,包括跳转指令(B, BL, BX)、算术运算指令(ADD, ADC, SUB, SBC, RSB, RSC, MUL, MLA等)、比较指令(CMP, CMN)、逻辑运算指令(AND, ORR, EOR, BIC, TST, TEQ)以及存储器访问指令(LDR, STR, LDRB, STRB, LDRH, STRH, LDM/STM等)。此外,还提到了数据传送、移位、异常产生和协处理器相关的指令。" 137200806,10080299,使用node-exporter监控Linux服务器,"['云原生', '监控', 'Prometheus', '系统监控', 'Linux']
摘要由CSDN通过智能技术生成

ARM汇编指令集

1   跳转指令

 

1.1  跳转指令B:

B   LABLE        ;跳转到标号LABEL处

B   0X1111         ;跳转到绝对地址0X1111处

 

1.2  带连接的跳转指令 BL:

START   …

             BL   NEXT      ;跳转到标号NEXT处,同时保存当前PC到R14中

             …                ;返回地址

             …

NEXT…                    ;子程序入口

              MOV  PC,R14     ;返回 

1.3  带状态切换的跳转指令BX:

MOV   R0,  #0X0201

BX          R0              ;程序跳转到0x0200处,微处理器切换到Thumb状态(地址必须是4的倍数,否则产生不可预知的后果)

 

 

2算术运算指令

2.1不带进位加法指令ADD

ADD  R0, R1, R2          ;R0← (R1)+(R2)

ADD  R0, R1, #112         ;R0← (R1)+ 112

ADD  R0, R1, R2, LSL  #1   ;R0←(R1)+(R2<<1)   ;将R2中的值左移1位,再与R1值相加,结果送R0

 

2.2带进位加法指令 ADC         

ADDS   R0, R3, R6      ;加最低位字节,不带进位

ADCS   R1, R4, R7      ;加第二个字,带进位

ADCS   R2, R5,R8       ;加第三个字,带进位

;三句话实现了96bit加法运算,由于ARM寄存器宽度只有32bit所以分三次相加

 

 

2.3 不带进位减法指令SUB        ;S—进位标志

SUB   R0, R1, R2          ;R0←(R1)- (R2)

SUB   R0, R1, #112         ;R0←(R1)- 112

SUB   R0, R1 ,R2 LSL#1    ;R0←(R1)- (R2<<1)

2.4 带进位减法指令SBC

SUBS  R0, R3, R6            ;减最低位字节,不带进位

SBCS  R1, R4, R7            ;减第二个字,带进位

SBCS  R2, R5, R8            ;减第三个字,带进位

;三句话实现了96bit减法运算,由于ARM寄存器宽度只有32bit所以分三次相减

 

2.5 不带进位逆向减法指令RSB

RSB   R0, R1, R2                     ;R0←(R2)- (R1)

RSB   R0, R1, #112                  ;R0← 112- (R1)

RSB   R0, R1, R2, LSL#1             ;R0←(R2<<1)-R1

2.6 带进位逆向减法指令RSC

RSBS   R0, R6, R3                    ;减最低字节的字,不带进位

RSCS   R1, R7, R4                    ;减第二个字,带进位

RSCS   R2, R8, R5                    ;减第三个字,带进位

;三句话实现了96bit减法运算,由于ARM寄存器宽度只有32bit所以分三次相减

2.7      32位乘法指令MUL

MUL   R0, R1, R2                     ;R0←(R1) X(R2)

MULS   R0, R1, R2                    ;R0←(R1) X(R2)   ;更新CPSR标志位

2.8      乘-累加指令 MLA

MLA   R0, R1, R2, R3                  ;R0←(R1) X(R2)+(R3)

MLAS   R0, R1, R2, R3                 ;R0←(R1) X(R2)+(R3)  ;更新CPSR标志位

2.9  无符号数长乘指令 UMULL

     MOV  R5, #0X01

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值