马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
ADD、ADC、SUB、RSB、SBC和RSB 用法 ADD和SUB是简单的加减运算 ADC和SBC是带进位标志的加减运算。对于SBC,若进位标志为0,则结果减1。 RSB是反减。若进位标志为0,则结果减1. 注意事项 若设置S位,则这些指令根据结果更新标志N、Z、C和V。 ADC、SBC和RSC用于多个字的算数运算。 例如,下面2条指令完成64位整数的加法: ADDS R4,R0,R2 ;加低有效位 ADC R5,R1,R3 ;加高有效位 下面这些指令完成96位减法: SUBS R3,R6,R9 SBCS R4,R7,R10 SBC R5,R8,R11 例子 ADD R2,R1,R3 SUBS R8,R6,#240 ;根据结果设置标志 RSB R4,R4,#1280 ;1280—R4 ADCHI R11,R0,R3 ;只有标志C置位且标志Z清0时才执行 RSCLES R0,R5,R0,LSL R4;有条件执行,设置标志 AND、ORR、EOR和BIC 用法 AND、EOR和ORR分别完成“与”“异或”“或”的按位操作。AND可常用于提取寄存器中某些位的值。ORR常用于将寄存器中某些位的值设置为1.EOR常用于将寄存器中某些位的值取反。 BIC用于将源操作数的各位与第2操作数中相应位的反码进行“与”操作。BIC可用于将寄存器中某些位的值设置为0。 注意事项 若设置S位,则这些指令根据结果更新标志N和Z,在计算第2操作数时更新标志C,不影响V标志。 例子 AND R9,R2,# 0xFF00 ORREQ R2,R0,R5 EOR R0,R0,R3,ROR R6 BICNES R8,R10,R0,RRX MOV和MVN 用法 MOV是将第2 操作数的值拷贝到结果寄存器中。 MVN是“取反传送”,它是把第2操作数的每一位取反,将得到的值置入结果寄存器。 注意事项 若设置S位,则这些指令根据结果更新标志N和Z,在计算第2操作数时更新标志C,不影响V标志。 例子 MOV R9,R2 MVNNE R0,#0xFF00 MOVS R0,R0,ROR R6 CMP和CMN 用法 CMP表示比较,用目的操作数减去源操作数,根据结果更新条件码标志。除了将结果丢弃外,CMP指令与SUBS指令完成的操作一样 CMN表示取反比较,将目的操作数和源操作数相加,根据结果更新条件码标志。除了将结果丢弃外,CMN指令与ADDS指令完成的操作一样。 注意事项 这些指令根据结果更新标志N、Z、C和V,但结果不放到任何寄存器中。 例子 CMPGT R13,R7,LSL #2 CMN R0,#6400 TST和TEQ TST表示测试,对2个操作数进行位“与”操作,根据结果更新条件码标志。除了将结果丢弃外,TST指令与ANDS指令完成的操作一样。TST通常用于测试寄存器中某些位是1还是0. TEQ表示测试相等,对第2操作数进行按位“异或”操作,根据结果更新条件码标志。除了将结果丢弃外,TEQ指令与EORS指令完成的操作一样。TEQ通常用于比较2个操作数是否相等,这种比较一般不影响CPSR的V和C。它也可用于比较2个操作数是否相同。 注意事项 这些指令根据结果更新标志N、Z、C和V,但结果不放到任何寄存器中。 例子 TST R0, #0x3F8 TEQEQ R10, R9 TSTNE R1, R5,ASR R1 凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网 |