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指令

相关推荐
资料,小偿9 小时前
4.1.2基于51单片机汇编语言出租车计价器proteus仿真出租车计价器,汇编语言51单片机
汇编·51单片机·proteus
ol木子李lo2 天前
Visual studio 2022高亮汇编(ASM)语法方法
汇编·ide·windows·visual studio
磨十三3 天前
MCU 时钟系统全解析:主时钟、PLL、分频与外设时钟门控
arm开发·单片机·嵌入式硬件
磨十三3 天前
ARM Cortex-M 系列 MCU:内核、指令、异常与中断解析
arm开发·单片机·嵌入式硬件
Leinwin3 天前
微软发布全新一代 Arm 架构云原生处理器 Cobalt 200
arm开发·microsoft·架构
卖芒果的潇洒农民3 天前
Work ARM CPU
arm开发
虚伪的空想家3 天前
arm架构服务器使用kvm创建虚机报错,romfile “efi-virtio.rom“ is empty
linux·运维·服务器·javascript·arm开发·云原生·kvm
明月清了个风4 天前
工作笔记-----EEPROM偶发性读取错误
arm开发·笔记·单片机·嵌入式硬件
大侠课堂4 天前
单片机经典面试题50道
arm开发·单片机·嵌入式硬件·mongodb
wa的一声哭了4 天前
并行计算 PCAM方法学
linux·运维·服务器·arm开发·python·spring·django