跳转指令:最简略的这届修正PC的值
以下指令中能够完结从当时指令向前或向后的32M的地址空间的跳转
B{条件} 方针地址 ;花括号一共条件,能够省掉
最简略的跳转指令,一旦遇到一个B指令,ARM处理器将当即跳转到给定的方针地址,从那里持续碑文
CMP R!,#0
BEQ Label ;EQ持平
当CPSR寄存器中的Z条件码方位时,程序跳转到标号Label处碑文
BL
BL{条件} 方针地址
跳转之前,会在寄存器R14中保存PC当时值。因而能够经过将R14的内容从头加载到PC中,来回来到跳转指令之后的那个指令处碑文。该指令是完结子程序调用的一个根本但常用的手法。
BLX
X一共跳转到指定地址的一起,将作业状况从ARM状况切换到Thumb状况,该指令一起将PC的当时内容保存到R14中
因而当子程序运用Thumb指令集,而调用者运用ARM指令集时,能够经过BLX指令完结子程序的调用和处理器作业状况,一起,子程序的回来能够经过将寄存器R14值到PC中来完结。
BX 跳转并切换状况
数据处理指令
MOV指令
MOV{条件}{S} 方针寄存器,源操作数 ———-》S加上可能会影响CPSR中的标志位。不加指令不更新CPSR。一般都不加。源操作数不能够是内存
MVN{条件}{S} 在传送之前把源操作数按位取反
CMP指令
TST指令 测验某一个位是否被设置了
TST R1,#%1 成果 ;用于测验在寄存器R1中是否设置了最低位(%一共二进制数)对操作数1与操作数2进行按位的与运算,成果为0 ,EQ位将被设置
LDR R5,=0xffffffff
TST R5,#(1<<23) ;当bit23位为1时,CPSR EQ位被设置
MOVEQ R5,#0x00 —->不碑文词语据,不满足EQ
MOVNE R5,#0x01
ADD指令 加
SUB指令 减
AND 逻辑与
ORR 逻辑或
BIC Rd,Rn,operand2 用于将Rn中的某些位清零。并把成果存放在Rd中,操作数operand2为32位的掩码,假如掩码设置了某一位为1,则铲除这一位。
B%&&&&&% R0,R0,#%1011 ;将R0的0,1,3位清零,其他位坚持不变。
MUL乘法指令
程序状况字的拜访指令
MRS{条件} 通用寄存器,程序状况寄存器(CPSR/SPSR)
将程序状况寄存器的内容传送到通用寄存器中
1.当需求改动程序状况寄存器内容时,可用MRS将程序状况寄存器的内容读入通用寄存器,修正后再写回程序状况寄存器。
2.当在反常处理或进程切换时,需求保存程序状况寄存器的值,可先用该指令读出程序状况寄存器的值,然后保存。
MRS R0,SPSR ;传送CPSR的内容到R0
MSR指令
MSR 程序状况寄存器(CPSR/SPSR)_<域> ,操作数
将操作数的内容传送到程序状况寄存器或其特定域中。其间操作数能够是通用寄存器或当即数。<域>用于设置程序状况寄存器中需求操作的位,32位的程序状况寄存器能够分为4个域
位为条件标志位,用f一共。位为状况域位,用s一共。为为扩展位域,用x一共。为为操控位域,用c一共
该指令一般用于或改动程序状况寄存器的内容,在运用时,一般要在MSR指令中指明酿制操作的域。
MSR CPSR,R0
MSR SPSR,R0 ;传送R0内容带SPSR
MSR CPSR_c,R0 ;传送R0到CPSR,但只是修正CPSR中的操控位域
拜访内存
寄存器和存储器之间传送数据
加载和存储指令
LDR 目地寄存器,<存储器地址>
从存储器中将一个32位数据传送到目地寄存器中
LDRB 意图寄存器,<存储器地址>
LDRB用于从存储器中将一个8位的字节数据传送到意图寄存器中,一起将寄存器的高24位清零。该指令一般用于从存储器中读取8位的字节数据到通用寄存器,然后对数据进行处理。
LDRH
和LDRB操作相似,是取一个16位的数据
STR 源寄存器,<存储器地址>
STR从源寄存器中将一个32为的字数据传到存储器中
批量加载存储指令
LDM
STM
数据交换指令
SWP
SWPB
移位指令(逻辑移位不考虑正负号,管用移位考虑正负号)
LSL 逻辑左移
ASL 管用左移
LSR 逻辑右移
ASR 管用右移
ROR 循环右移
反常发生指令
ARM支撑的反常发生指令有如下两条
SWI:软件中止指令
BKPT:断点中止指令