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