ARM应用系统开发详解:第3章 ARM微处理器的指令系统
存器R3~R0:
ADDSR0,R4,R8;加低端的字
ADCSR1,R5,R9;加第二个字,带进位
ADCSR2,R6,R10;加第三个字,带进位
ADCR3,R7,R11;加第四个字,带进位
9、SUB指令
SUB指令的格式为:
SUB{条件}{S}目的寄存器,操作数1,操作数2
SUB指令用于把操作数1减去操作数2,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令可用于有符号数或无符号数的减法运算。
指令示例:
SUBR0,R1,R2;R0 = R1 - R2
SUBR0,R1,#256;R0 = R1 - 256
SUBR0,R2,R3,LSL#1;R0 = R2 - (R3 < 1)
10、SBC指令
SBC指令的格式为:
SBC{条件}{S}目的寄存器,操作数1,操作数2
SBC指令用于把操作数1减去操作数2,再减去CPSR中的C条件标志位的反码,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令使用进位标志来表示借位,这样就可以做大于32位的减法,注意不要忘记设置S后缀来更改进位标志。该指令可用于有符号数或无符号数的减法运算。
指令示例:
SUBSR0,R1,R2;R0 = R1 - R2 -!C,并根据结果设置CPSR的进位标志位
11、RSB指令
RSB指令的格式为:
RSB{条件}{S}目的寄存器,操作数1,操作数2
RSB指令称为逆向减法指令,用于把操作数2减去操作数1,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令可用于有符号数或无符号数的减法运算。
指令示例:
RSBR0,R1,R2;R0 = R2 – R1
RSBR0,R1,#256;R0 = 256 – R1
RSBR0,R2,R3,LSL#1;R0 = (R3 < 1) - R2
12、RSC指令
RSC指令的格式为:
RSC{条件}{S}目的寄存器,操作数1,操作数2
RSC指令用于把操作数2减去操作数1,再减去CPSR中的C条件标志位的反码,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令使用进位标志来表示借位,这样就可以做大于32位的减法,注意不要忘记设置S后缀来更改进位标志。该指令可用于有符号数或无符号数的减法运算。
指令示例:
RSCR0,R1,R2;R0 = R2 – R1 -!C
13、AND指令
AND指令的格式为:
AND{条件}{S}目的寄存器,操作数1,操作数2
AND指令用于在两个操作数上进行逻辑与运算,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于屏蔽操作数1的某些位。
指令示例:
ANDR0,R0,#3;该指令保持R0的0、1位,其余位清零。
14、ORR指令
ORR指令的格式为:
ORR{条件}{S}目的寄存器,操作数1,操作数2
ORR指令用于在两个操作数上进行逻辑或运算,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于设置操作数1的某些位。
指令示例:
ORRR0,R0,#3;该指令设置R0的0、1位,其余位保持不变。
15、EOR指令
EOR指令的格式为:
EOR{条件}{S}目的寄存器,操作数1,操作数2
EOR指令用于在两个操作数上进行逻辑异或运算,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于反转操作数1的某些位。
指令示例:
EORR0,R0,#3;该指令反转R0的0、1位,其余位保持不变。
16、BIC指令
BIC指令的格式为:
BIC{条件}{S}目的寄存器,操作数1,操作数2
BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。操作数2为32位的掩码,如果在掩码中设置了某一位,则清除这一位。未设置的掩码位保持不变。
指令示例:
BICR0,R0,#%1011;该指令清除R0中的位0、1、和3,其余的位保持不变。
3.3.3乘法指令与乘加指令
ARM微处理器支持的乘法指令与乘加指令共有6条,可分为运算结果为32位和运算结果为64位两类,与前面的数据处理指令不同,指令中的所有操作数、目的寄存器必须为通用寄存器,不能对操作数使用立即数或被移位的寄存器,同时,目的寄存器和操作数1必须是不同的寄存器。
乘法指令与乘加指令共有以下6条:
—MUL32位乘法指令
—MLA32位乘加指令
—SMULL64位有符号数乘法指令
—SMLAL64位有符号数乘加指令
—UMULL64位无符号数乘法指令
—UMLAL64位无符号数乘加指令
1、MUL指令
MUL指令的格式为:
MUL{条件}{S}目的寄存器,操作数1,操作数2
ARM微处理器指令系 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)