首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM汇编指令(2)

ARM汇编指令(2)

5TST指令(测试)
TST指令的格式为:

TST{条件} 操作数1,操作数2
TST指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值。操作数1是要测试的数 据,而操作数2是一个位掩码,该指令一般用来检测是否设置了特定的位。
指令示例:
TST   R1,#%1            ;用于测试在寄存器R1中是否设置了最低位(%表 示二进制数)
TST R1,#0xffe          ;将寄存器R1的值与立即数0xffe按位与,并根据 结果设置CPSR ;的标志位
6TEQ指令(测试相等)
TEQ指令的格式为:
TEQ{条件} 操作数1,操作数2
TEQ指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的异或运算,并根据运算结果更新CPSR中条件标志位的值。该指令通常用于比较操作数1和操作数2是否相等。
指令示例:
TEQ   R1R2          ;将寄存器R1的值与寄存器R2的值按位异或,并根据结果 设置CPSR
;的标志位
7ADD指令(相加)
ADD指令的格式为:

ADD{条件}{S} 目的寄存器,操作数1,操作数2
ADD指令用于把两个操作数相加,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。
指令示例:
ADD     R0R1R2                  R0 = R1 + R2
ADD     R0R1#256                R0 = R1 +256
ADD     R0R2R3LSL#1       R0 = R2 +(R3 << 1)
8ADC指令(带进位相加)
ADC指令的格式为:
ADC{条件}{S} 目的寄存器,操作数1,操作数2
ADC指令用于把两个操作数相加,再加上CPSR中的C条件标志位的值,并将结果存放到目的寄存器中。它使用一个进位标志位,这样就可以做比32位大的数 的加法,注意不要忘记设置S后缀来更改进位标志。操作数1应是一个寄存器,操作数2可以是一 个寄存器,被移位的寄存器,或一个立即数。
以下指令序列完成两个128位数的加法,第一个数由高到低存放在寄存器R7R4,第二个数由高到低存放在寄存器R11R8,运算结果由高到低存放在寄 存器R3R0
ADDS    R0R4R8          加低端的字
ADCS    R1R5R9          加第二个字,带进位
ADCS    R2R6R10       加第三个字,带进位
ADC      R3R7R11       加第四个字,带进位
9SUB指令(相减)
SUB指令的格式为:
SUB{条件}{S} 目的寄存器,操作数1,操作数2
SUB指令用于把操作数1减去操作数2,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即 数。该指令可用于有符号数或无符号数的减法运算。
指令示例:
SUB     R0R1R2                R0 = R1 - R2
SUB     R0R1#256            R0 = R1 -256
SUB     R0R2R3LSL#1      R0 = R2 -(R3 << 1)
10~~~~C指令
~~~~C指令的格式为:
~~~~C{条件}{S} 目的寄存器,操作数1,操作数2
~~~~C指令用于把操作数1减去操作数2,再减去CPSR中的C条件标志位的反码,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以 是一个寄存器,被移位的寄存器,或一个立即数。该指令使用进位标志来表示借位,这样就可以做大于32位的减法,注意不要忘记设置S后缀来更改进位标志。该指令可用于有符号数或无符号数的减法运算。
指令示例:
SUBS    R0R1R2       R0 = R1 - R2- C,并根据结果设置CPSR的进位标志位
11R~~~~指令
R~~~~指令的格式为:
R~~~~{条件}{S} 目的寄存器,操作数1,操作数2
R~~~~指令称为逆向减法指令,用于把操作数2减去操作数1,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位 的寄存器,或一个立即数。该指令可用于有符号数或无符号数的减法运算。
指令示例:
R~~~~     R0R1R2                         R0 = R2 – R1
R~~~~     R0R1#256                     R0 = 256 –R1
R~~~~     R0R2R3LSL#1          R0 = (R3<< 1) - R2
12RSC指令(反向带进位减)
RSC指令的格式为:
RSC{条件}{S} 目的寄存器,操作数1,操作数2
RSC指令用于把 操作数2减去操作数1,再减去CPSR中的C条件标志位的反码,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位 的寄存器,或一个立即数。该指令使用进位标志来表示借位,这样就可以做大于32位的减法,注意不要忘记设置S后缀来更改进位标志。该指令可用于有符号数或 无符号数的减法运算。
指令示例:
RSC     R0R1R2          R0 = R2 – R1- C
继承事业,薪火相传
返回列表