当前位置:首页 > 单片机 > 单片机
[导读]数据处理指令可分为数据传送指令、算术逻辑运算指令和比较指令等。数据传送指令用于在寄存器和存储器之间进行数据的双向传输。 算术逻辑运算指令完成常用的算术与逻辑的运算,该类指令不但将运算结果保存在目的寄存器

数据处理指令可分为数据传送指令、算术逻辑运算指令和比较指令等。

数据传送指令用于在寄存器和存储器之间进行数据的双向传输。 算术逻辑运算指令完成常用的算术与逻辑的运算,该类指令不但将运算结果保存在目的寄存器中,同时更新CPSR 中的相应条件标志位。 比较指令不保存运算结果,只更新CPSR 中相应的条件标志位。

数据处理指令包括:

— MOV 数据传送指令

— MVN 数据取反传送指令

— CMP 比较指令

— CMN 反值比较指令

— TST 位测试指令

— TEQ 相等测试指令

— ADD 加法指令

— ADC 带进位加法指令

— SUB 减法指令

— SBC 带借位减法指令

— RSB 逆向减法指令

— RSC 带借位的逆向减法指令

— AND 逻辑与指令

— ORR 逻辑或指令

— EOR 逻辑异或指令

— BIC 位清除指令

1、 MOV 指令

MOV 指令的格式为:

MOV{条件}{S} 目的寄存器,源操作数

MOV 指令可完成从另一个寄存器、被移位的寄存器或将一个立即数加载到目的寄存器。其中S选项决定指令的操作是否影响CPSR 中条件标志位的值,当没有S 时指令不更新CPSR 中条件标志位的值。

指令示例:

MOV R1 , R0 ;将寄存器 R0 的值传送到寄存器 R1

MOV PC , R14 ;将寄存器 R14 的值传送到 PC ,常用于子程序返回

MOV R1 , R0 , LSL # 3 ;将寄存器 R0 的值左移 3 位后传送到 R1

2、 MVN 指令

MVN 指令的格式为:

MVN{条件}{S} 目的寄存器,源操作数

MVN 指令可完成从另一个寄存器、被移位的寄存器、或将一个立即数加载到目的寄存器。与MOV 指令不同之处是在传送之前按位被取反了,即把一个被取反的值传送到目的寄存器中。其中S 决定指令的操作是否影响CPSR 中条件标志位的值,当没有S 时指令不更新CPSR 中条件标志位的值。

指令示例:

MVN R0 ,# 0 ;将立即数 0 取反传送到寄存器 R0 中,完成后 R0=-1

3、 CMP 指令

CMP 指令的格式为:

CMP{条件} 操作数1,操作数2

CMP 指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更新CPSR 中条件标志位的值。该指令进行一次减法运算,但不存储结果,只更改条件标志位。标志位表示的是操作数1 与操作数2 的关系(大、小、相等),例如,当操作数1 大于操作操作数2,则此后的有GT后缀的指令将可以执行。

指令示例:

CMP R1 , R0 ;将寄存器 R1 的值与寄存器 R0 的值相减,并根据结果设置 CPSR 的标志位

CMP R1 ,# 100 ;将寄存器 R1 的值与立即数 100 相减,并根据结果设置 CPSR 的标志位

4、 CMN 指令

CMN 指令的格式为:

CMN{条件} 操作数1,操作数2

CMN 指令用于 把一个寄存器的内容和另一个寄存器的内容或立即数取反后进行比较,同时更新CPSR 中条件标志位的值。该指令实际完成操作数1 和操作数2 相加,并根据结果更改条件标志位。

指令示例:

CMN R1 , R0 ;将寄存器 R1 的值与寄存器 R0 的值相加,并根据结果设置 CPSR 的标志位

CMN R1 ,# 100 ;将寄存器 R1 的值与立即数 100 相加,并根据结果设置 CPSR 的标志位

5、 TST 指令

TST 指令的格式为:

TST{条件} 操作数1,操作数2

TST 指令用于 把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR 中条件标志位的值。操作数1 是要测试的数据,而操作数2 是一个位掩码,该指令一般用来检测是否设置了特定的位。

指令示例:

TST R1 ,#% 1 ;用于测试在寄存器 R1 中是否设置了最低位(%表示二进制数)

TST R1 ,# 0xffe ;将寄存器 R1 的值与立即数 0xffe 按位与,并根据结果设置 CPSR 的标志位

6、 TEQ 指令

TEQ 指令的格式为:

TEQ{条件} 操作数1,操作数2

TEQ 指令用于 把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的异或运算,并根据运算结果更新CPSR 中条件标志位的值。该指令通常用于比较操作数1 和操作数2 是否相等。

指令示例:

TEQ R1 , R2 ;将寄存器 R1 的值与寄存器 R2 的值按位异或,并根据结果设置 CPSR 的标        志位

7、 ADD 指令

ADD 指令的格式为:

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

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

指令示例:

ADD R0 , R1 , R2 ; R0 = R1 + R2

ADD R0 , R1 , #256 ; R0 = R1 + 256

ADD R0 , R2 , R3 , LSL#1 ; R0 = R2 + (R3 << 1)

8、 ADC 指令

ADC 指令的格式为:

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

ADC 指令用于 把两个操作数相加,再加上CPSR 中的C 条件标志位的值,并将结果存放到目的寄存器中。它使用一个进位标志位,这样就可以做比32 位大的数的加法,注意不要忘记设置S 后缀来更改进位标志。操作数1 应是一个寄存器,操作数2 可以是一个寄存器,被移位的寄存器,或一个立即数。

以下指令序列完成两个128 位数的加法,第一个数由高到低存放在寄存器R7~R4,第二个数由高到低存放在寄存器R11~R8,运算结果由高到低存放在寄存器R3~R0:

ADDS R0 , R4 , R8 ; 加低端的字

ADCS R1 , R5 , R9 ; 加第二个字,带进位

ADCS R2 , R6 , R10 ; 加第三个字,带进位

ADC R3 , R7 , R11 ; 加第四个字,带进位

9、 SUB 指令

SUB 指令的格式为:

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

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

指令示例:

SUB R0 , R1 , R2 ; R0 = R1 - R2

SUB R0 , R1 , #256 ; R0 = R1 - 256

SUB R0 , R2 , R3 , LSL#1 ; R0 = R2 - (R3 << 1)

10、SBC 指令

SBC 指令的格式为:

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

SBC 指令用于 把操作数 1 减去操作数 2 ,再减去CPSR 中的C 条件标志位的反码,并将结果存放到目的寄存器中。操作数 1 应是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即数。该指令使用进位标志来表示借位,这样就可以做大于 32 位的减法,注意不要忘记设置S后缀来更改进位标志。该指令可用于有符号数或无符号数的减法运算。

指令示例:

SUBS R0 , R1 , R2 ; R0 = R1 - R2 - ! C ,并根据结果设置 CPSR 的进位标志位

11、RSB 指令

RSB 指令的格式为:

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

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

指令示例:

RSB R0 , R1 , R2 ; R0 = R2 – R1

RSB R0 , R1 , #256 ; R0 = 256 – R1

RSB R0 , R2 , R3 , LSL#1 ; R0 = (R3 << 1) - R2

12、RSC 指令

RSC 指令的格式为:

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

RSC 指令用于 把操作数 2 减去操作数 1 ,再减去CPSR 中的C 条件标志位的反码,并将结果存放到目的寄存器中。操作数 1 应是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即数。该指令使用进位标志来表示借位,这样就可以做大于 32 位的减法,注意不要忘记设置S后缀来更改进位标志。该指令可用于有符号数或无符号数的减法运算。

指令示例:

RSC R0 , R1 , R2 ; R0 = R2 – R1 - ! C

13、AND 指令

AND 指令的格式为:

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

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

指令示例:

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

14、ORR 指令

ORR 指令的格式为:

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

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

指令示例:

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

15、EOR 指令

EOR 指令的格式为:

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

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

指令示例:

EOR R0 , R0 ,# 3 ; 该指令反转 R0 的 0 、 1 位,其余位保持不变。

16、BIC 指令

BIC 指令的格式为:

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

BIC 指令用于清除 操作数 1 的某些位,并把结果放置到目的寄存器中。操作数 1 应是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即数。操作数 2 为 32 位的掩码,如果在掩码中设置了某一位,则清除这一位。未设置的掩码位保持不变。

指令示例:

BIC R0 , R0 ,#% 1011 ;该指令清除 R0

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Sept. 10, 2025 ---- 根据TrendForce集邦咨询最新发布的《全球电动车逆变器市场数据》,2025年第二季受惠纯电动车(BEV)销售成长,全球电动车(注1)牵引逆变器装机量达766万台,年增19%。...

关键字: 增程式电动车 SiC 牵引逆变器

Sept. 8, 2025 ---- 根据TrendForce集邦咨询最新调查,2025年第二季NVIDIA(英伟达) Blackwell平台规模化出货,以及北美CSP业者持续扩大布局General Server(通用型...

关键字: SSD DDR4 服务器

Sept. 4, 2025 ---- Apple(苹果)即将发布iPhone 17、iPhone 17 Air(暂名)、iPhone 17 Pro及Pro Max四款旗舰新机,除了外观辨识度升级,处理器性能、散热和拍摄功...

关键字: iPhone 16 A19处理器 折叠机

Sept. 3, 2025 ---- 根据TrendForce集邦咨询最新发布的《2025近眼显示市场趋势与技术分析》报告,2025年随着国际品牌陆续推出AR眼镜原型,以及Meta预计在近期发布AR眼镜Celeste,市...

关键字: AR眼镜 OLED

Sept. 2, 2025 ---- TrendForce集邦咨询表示,2025年第二季DRAM产业因一般型DRAM (Conventional DRAM)合约价上涨、出货量显著增长,加上HBM出货规模扩张,整体营收为3...

关键字: DRAM 智能手机 ASP

Sept. 1, 2025 ---- 根据TrendForce集邦咨询最新调查,2025年第二季因中国市场消费补贴引发的提前备货效应,以及下半年智能手机、笔电/PC、Server新品所需带动,整体晶圆代工产能利用率与出货...

关键字: 晶圆代工 智能手机 笔电

Aug. 28, 2025 ---- 根据TrendForce集邦咨询最新调查,2025年第二季NAND Flash产业虽面临平均销售价格(ASP)小幅下滑,所幸原厂减产策略缓解供需失衡,叠加中、美两大市场政策推动,整体...

关键字: NAND Flash SSD AI

Aug. 26, 2025 ---- NVIDIA(英伟达)近日推出的Jetson Thor被视为机器人的物理智慧核心,以Blackwell GPU、128 GB记忆体堆叠出2070 FP4 TFLOPS AI算力,是前...

关键字: 机器人 大型语言模型 AI算力

Aug. 21, 2025 ---- 根据TrendForce集邦咨询最新液冷产业研究,随着NVIDIA GB200 NVL72机柜式服务器于2025年放量出货,云端业者加速升级AI数据中心架构,促使液冷技术从早期试点迈...

关键字: AI 数据中心 服务器

除了充电电路外,锂电池的放电过程也需要保护。锂电池的放电电压不能低于3.0V,否则电池寿命会大幅缩短。为了实现这一保护,工程师们设计了DW01芯片与8205 MOS管的电路组合。DW01芯片能够监控锂电池的放电电压和电流...

关键字: 锂电池 电池
关闭