| 助  记  符 | 说    明 | 操    作 | 
| ADC  Rd,Rm | 带进位的32位加 | Rd:=Rd+Rm+C flag | 
| ADD  Rd,Rn,Rm | 32位加 | Rd:=Rn+Rm | 
| ADD  Rd,Rn,#0~#7 | 32位加 | Rd:=Rn+3_bit_immed | 
| ADD  Rd,#0~#277 | 32位加 | Rd:=Rn+8_bit_immed | 
| AND  Rd,Rm | 逻辑与 | Rd:=Rd AND Rm | 
| ASR  Rd,Rm,#1~#32 | 算术右移 | Rd:=Rm ASR 5_bit_immed | 
| ASR  Rd,Rs | 算术右移 | Rd:=Rm ASR Rs | 
| BIC  Rd,Rm | 位清零 | Rd:=Rd AND NOT Rm | 
| CMN  Rn,Rm | 32位取负比较 | Rn+Rm 并设置标志位 | 
| CMP  Rn,#0~#255 | 32位整数比较 | Rn-8_bit_immed 并设置标志位 | 
| CMP  Rn,Rm | 32位整数比较 | Rn-Rm 并设置标志位 | 
| EOR  Rd,Rm | 异或 | Rd:=Rd EOR Rm | 
| LSL  Rd,Rm,#0~#31 | 逻辑左移 | Rd:=Rm LSL 5_bit_immed | 
| LSL  Rd,Rs | 逻辑左移 | Rd:=Rd LSL Rs | 
| LSR  Rd,Rm,#1~#32 | 逻辑右移 | Rd:=Rm LSR 5_bit_immed | 
| LSR  Rd,Rs | 逻辑右移 | Rd:=Rd LSR Rs | 
| MOV  Rd,#0~#255 | 将数据送入寄存器 | Rd:=8_bit_immed | 
| MOV  Rd,Rn | 将数据送入寄存器 | Rd:=Rn | 
| MUL  Rd,Rm | 乘 | Rd:=Rm*Rd | 
| MVN  Rd,Rm | 将32位数的“反”送入寄存器 | Rd:=NOT Rm | 
| NEG  Rd,Rm | 求反 | Rd:=0-Rm | 
| ORR  Rd,Rm | 逻辑或 | Rd:=Rd OR Rm | 
| ROR  Rd,Rs | 逻辑右移 | Rd:=Rd ROR Rs | 
| SBC  Rd,Rm | 带进位减 | Rd:=Rd-Rm-NOT(Carry Flag) | 
| SUB  Rd,Rn,Rm | 减 | Rd:=Rn-Rm | 
| SUB  Rd,Rn,#0~#7 | 减 | Rd:=Rn-3_bit_immed | 
| SUB  Rd,#0~#255 | 减 | Rd:=Rn-8_bit_immed | 
| TST  Rn,Rm | 位测试指令 | Rn AND Rm 并更新标志位 | 
|   | 注意 | 上面的指令和语法格式中,3_bit_immed、7_bit_immed、8_bit_immed分别表示3位、7位、8位立即数。 | 
|  | 注意 | 该指令与ADD(3)的区别在于其操作数寄存器。该指令的操作数寄存器为r8~r14和PC高寄存器。操作结果对程序状态字的标志位没有影响。 | 
|  | 注意 | 在ARMv5以前的体系结构版本中,没有单独的Thumb移位指令。在ARMv6版本中已经增加了位移指令,详细信息请参加ARM体系结构相关文档。 | 
|  | 注意 | 指令操作数寄存器<Rn>和<Rm>中,至少有一个寄存器为r8~r14或PC寄存器的高16位,否则,指令的执行结果不可预知。 | 
|  | 注意 | 从指令的编码形式可以看出,MOV(2)指令被作为ADD  Rd,Rn,#0指令来编译。 | 
|  | 注意 | 如果目的寄存器<Rd>和源寄存器<Rm>同时为r0~r7低寄存器,则指令的执行结果不可预知。 | 
|  | 注意 | 如果乘法指令MUL的源和目的寄存器使用相同的寄存器,则指令的执行结果不可预知;对于有符号数和无符号数,指令的操作结果是一样的。 | 
|  | 注意 | 在Thumb指令集中,使用满递减堆栈,该指令常被用于元素的入栈操作。 | 
| 欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |