[学习资料] 数据的处理指令

[复制链接]
 楼主| AdaMaYun 发表于 2023-12-26 09:15 | 显示全部楼层 |阅读模式

ADD

  1. ADD{条件}{S} 目的寄存器,操作数1,操作数2

ADD指令用于把两个操作数相加,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。指令示例:

  1. ADD  R0,R1,R2           ;R0 = R1 + R2
  2. ADD  R0,R1,#256            ;R0 = R1 + 256
  3. ADD  R0,R2,R3,LSL#1      ;R0 = R2 + (R3 << 1)


ADC
注意这个指令不是射手。。。。

除了正常做加法运算之外,还要加上CPSR中的C条件标志位,如果要影响CPSR中对应位,加后缀S。

SUB
SUB指令的格式为:

  1.   SUB{条件}{S} 目的寄存器,操作数1,操作数2

SUB指令用于把操作数1减去操作数2,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令可用于有符号数或无符号数的减法运算。

如:

  1. SUB  R0,R1,R2          ;R0 = R1 - R2
  2. SUB  R0,R1,#256        ;R0 = R1 - 256
  3. SUB  R0,R2,R3,LSL#1   ;R0 = R2 - (R3 << 1)


SBC
除了正常做加法运算之外,还要再减去CPSR中C条件标志位的反码 根据执行结果设置CPSR对应的标志位 AND指令的格式为:

  1. AND{条件}{S} 目的寄存器,操作数1,操作数2

AND指令用于在两个操作数上进行逻辑与运算,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于屏蔽操作数1的某些位。如:

  1. AND  R0,R0,#3           ; 该指令保持R0的0、1位,其余位清零。


ORR
ORR指令的格式为:

  1. ORR{条件}{S} 目的寄存器,操作数1,操作数2

ORR指令用于在两个操作数上进行逻辑或运算,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于设置操作数1的某些位。如:

  1. ORR  R0,R0,#3           ; 该指令设置R0的0、1位,其余位保持不变。



BIC
这是一个非常实用的指令,在实际寄存器操作经常要将某些位清零,但是又不想影响其他位的值,就可以使用该命令。


BIC指令的格式为:

  1.   BIC{条件}{S} 目的寄存器,操作数1,操作数2

BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。

操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。操作数2为32位的掩码,如果在掩码中设置了某一位,则清除这一位。未设置的掩码位保持不变。

如:

  1. BIC  R0,R0,#%1011    ; 该指令清除 R0 中的位 0、1、和 3,其余的位保持不变。


冬天下雪 发表于 2023-12-26 09:16 | 显示全部楼层
这个可以直接在C语言中嵌套汇编语言吧
亚瑟 发表于 2023-12-29 10:44 来自手机 | 显示全部楼层
冬天下雪 发表于 2023-12-26 09:16
这个可以直接在C语言中嵌套汇编语言吧

可以用内联汇编
jflahdink09 发表于 2023-12-29 11:33 | 显示全部楼层
汇编语言一直是单片机的精华操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

299

主题

2492

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部

299

主题

2492

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部