数据处理指令的一般格式:
<opcode>{cond}{S} <Rd>, <Rn>,<shifter_operand>
<opcode>:数据处理指令的助记符 ADD MOV SUB CMP
{cond}:条件标识,EQ,NE所有的数据处理指令都可以条件执行
{S}:本指令的结构会影响CPSR状态寄存器的条件标志位 NZCV
<Rd>:目标寄存器
<Rn>:第一源操作数,寄存器
<shifter_operand>:第二源操作数
LSL:逻辑左移,空出的低位由0填充
LSR:逻辑右移,空出的高位由0填充
ASR:算数右移,空出的空位由符号位填充
ROR:循环右移,移出的低位用于填充空出的高位
RRX:扩展右移一位,将寄存器的内容右移1位,空位由原来的cpsr寄存器的C位填充,将移出的位填充到C位,只有RRX,不需要指定移动位数
数据传送指令(MOV、MVN)无第一源操作数
MOV{cond}{S} <Rd>, <shifter_operand>
功能:Rd=<shifter_operand>的内容
shifter_operand:立即数(8位图)、寄存器、寄存器移位
当目标寄存器为PC时,如果加S ,不是影响NZCV,CPSR = SPSR,异常返回。
MVN{cond}{S} <Rd>, <shifter_operand>
shifter_operand:立即数(8位图)、寄存器、寄存器移位
功能:Rd=<shifter_operand>按位取反
算术运算指令(ADD、ADC、SUB、SBC、RSB、RSC)
<opcode>{cond}{S} <Rd>, <Rn>,<shifter_operand>
ADD 正常加 Rd= Rn +<shifter_operand>
ADC 带进位加 Rd= Rn +<shifter_operand>+C
SUB