ARM 汇编指令:(四) 位运算指令

一.移位指令

1.LSL 指令

逻辑左移指令,实现将寄存器进行左移操作

复制代码
lsl r1, r0, #2 //r1 = r0 * 2^2
mov r1, r0, lsl, #2 //和上一个汇编指令效果一样
add r1, r0, lsl, #2 //r1 = r1 + r0 * 2^2

2.LSR 指令

逻辑右移指令,实现将寄存器进行右移操作

复制代码
lsr r1, r0, #2 //r1 = r0 / 2^2
mov r1, r0, lsr, #2 //和上一个汇编指令效果一样
add r1, r0, lsr, #2 //r1 = r1 + r0 / 2^2

二.位运算

1.AND (逻辑与指令)

AND:将操作数1按位与操作数2的结果存放在目标寄存器

复制代码
MOV R1, 0x0F   ; //将寄存器R1设置为0x0F,二进制为 00001111
MOV R2, 0x03   ; //将寄存器R2设置为0x03,二进制为 00000011
AND R3, R1, R2 ; //R3 = R1 & R2
//r3结果为0x03,二进制为 00000011

2.ORR (逻辑与指令)

将操作数1按位或操作数2的结果存放在目标寄存器

复制代码
MOV R1, 0x0F   ; //将寄存器R1设置为0x0F,二进制为 00001111
MOV R2, 0x03   ; //将寄存器R2设置为0x03,二进制为 00000011
ORR R3, R1, R2 ; //R3 = R1 | R2   
//r3结果为0x0f,二进制为 00001111

3.EOR(逻辑异或指令)

EOR:将操作数1按位异或操作数2的结果存放在目标寄存器

复制代码
MOV R1, 0x0F   ; //将寄存器R1设置为0x0F,二进制为 00001111
MOV R2, 0x03   ; //将寄存器R2设置为0x03,二进制为 00000011
EOR R3, R1, R2 ; //R3 = R1 ^ R2   
//r3结果为0x0c,二进制为 00001100

4.BIC(位清除指令 )

BIC:将操作数1按位与操作数2取反的结果存放在目标寄存器(目标寄存器=操作数1 & ~操作数2)

复制代码
MOV R1, 0x0F   ; //将寄存器R1设置为0x0F,二进制为 00001111
MOV R2, 0x03   ; //将寄存器R2设置为0x03,二进制为 00000011
BIC R3, R1, R2 ; //R3 = R1 & ~R2   
//r3结果为0x0c,二进制为 00001100

下一页:ARM 汇编指令:(五)CMP指令

相关推荐
女神下凡1 小时前
芯参谋(83):AliOS Things_驱动开发指南
arm开发·驱动开发·单片机·嵌入式硬件·设计规范·1024程序员节
女神下凡1 小时前
芯参谋(84):Linux eMMC 驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件
Zevalin爱灰灰19 小时前
Linux入门第二部分(ARM裸机篇) 第一章 开发环境搭建与了解
linux·arm开发·嵌入式
水饺编程20 小时前
第2章:Linux 基础,制作【.tar.xz】压缩包文件
linux·c语言·汇编
一条破秋裤1 天前
基于 Hi3516CV610 的立定跳远视频测量系统调研与实施方案
arm开发·音视频
szxinmai主板定制专家1 天前
AMR 项目落地:机器人控制器硬件定制化需求复盘
arm开发·单片机·fpga开发·系统架构·机器人·am62x
secondyoung2 天前
Cortex-R52与TriCore详细对比
arm开发·单片机·嵌入式硬件·mcu
电子科技圈2 天前
Arm电机控制开发工具哪家强?
arm开发·单片机·嵌入式硬件·设计模式·软件构建
abc light2 天前
ARM 裸机开发(6)——时钟树与定时器
arm开发·单片机·fpga开发
小向是个Der3 天前
嵌入式进阶——编译与链接
汇编·单片机·学习·编译原理·交叉编译