数据处理指令(二)—— 数据运算指令(加减乘)+ 逻辑运算指令(与或)+ 位清零(BIC)

news2025/1/19 14:35:02

无论是数据运算还是逻辑运算,需要满足如下格式:

<操作码>  <目标寄存器>  <第一操作寄存器>  <第二操作数>

  •  操作码:              表示执行哪种操作(加减乘)
  • 目标寄存器:        用于存储运算的结果
  • 第一操作寄存器: 存储第一个参与运算的数据(只能写寄存器) 
  • 第二操作数:        第二个参与运算的数据(可以是寄存器也可以是立即数)

目录

一、数据运算指令

1、加法指令

(1) 加法指令 ADD (相加时不考虑进位)

(2) 加法指令ADDS(保留进位状态)

(3) 带进位加法指令 ADC(相加时考虑进位)

2、减法指令

(1) 减法指令 SUB

(2) 减法指令SUBS(保留借位状态)

(3) 带借位减法指令 SBC

(4) 逆向减法指令 RSB 

3、乘法指令 MUL

二、逻辑运算指令

1、按位与指令 AND

2、按位或指令 ORR 

3、按位异或指令 EOR 

4、左移指令 LSL

5、右移指令 LSR

三、拓展指令

1、位清零指令 BIC

2、运算指令与其他指令的混合使用


一、数据运算指令

1、加法指令

(1) 加法指令 ADD (相加时不考虑进位)

ADD在做加法运算时,不考虑任何进位,包含了两方面。

  • ADD 运算产生的进位,会忽略(CPSR寄存器的C状态位不会改变)
    • 如果要记录产生的进位,需改为 ADDS 指令
  • 上一次运算产生的进位,也会忽略
    • 如果要考虑上一次的进位,需改为 ADC 指令
ADD R1, R2, R3      @ R1 = R2 + R3 
ADD R1, R2, #5      @ R1 = R2 + 5

ADD R1, #7, #5      @ 非法
ADD R1, #7, R2      @ 非法

注意:正常情况下使用的指令都是ADD,寄存器一次可以处理32bit,如果是处理64bit 的数才会需要用到ADDS 和 ADC。

 

(2) 加法指令ADDS(保留进位状态)

如果ADD的运算结果产生了进位,默认是不保存的,即不会更新到CPSR寄存器;如果要更新到CPSR寄存器,需要使用指令ADDS。

使用格式和ADD完全一样:

ADDS R1, R2, R3    @ R1 = R2 + R3

(3) 带进位加法指令 ADC(相加时考虑进位)

ADC在做加法运算时,会考虑上一次运算产生的进位。

ADC R1, R2, R3    @ R1 = R2 + R3 + CPSR的C状态位

2、减法指令

(1) 减法指令 SUB

SUB和上面ADD类似,在做减法运算时,不考虑任何借位

  • SUB 运算产生的借位,会忽略(CPSR寄存器的C状态位不会改变)
    • 如果要记录产生的借位,需改为 SUBS 指令
  • 上一次运算产生的借位,也会忽略
    • 如果要考虑上一次的借位,需改为 SBC 指令
SUB R1, R2, R3     @ R1 = R2 - R3
SUB R1, R2, #1     @ R1 = R2 - 1

(2) 减法指令SUBS(保留借位状态)

SUB产生的借位,默认不保存,即不会更新到CPSR寄存器;如果要更新到CPSR寄存器,需要使用指令SUBS。

SUBS R1, R2, R3    @ R1 = R2 - R3

(3) 带借位减法指令 SBC

SBC 在做减法运算时,会考虑上一次运算产生的借位

SBC R1, R2, R3    @ R1 = R2 - R3 - (!CPSR的C状态位)

(4) 逆向减法指令 RSB 

减法指令ADD只能是一个寄存器减去一个立即数,逆向减法指令可以让一个立即数减去一个寄存器。但是依然不能违背最初的格式。

RSB R1, R2, #5           @R1 = 5 - R2

 

3、乘法指令 MUL

乘法指令比较特殊,只能是两个寄存器相乘

MUL R1, R2, R3           @R1 = R2 * R3

二、逻辑运算指令

1、按位与指令 AND

AND R1, R2, R3        @ R1 = R2 & R3

2、按位或指令 ORR 

ORR R1, R2, R3        @ R1 = R2 | R3

3、按位异或指令 EOR 

EOR R1, R2, R3        @ R1 = R2 ^ R3

4、左移指令 LSL

LSL R1, R2, 1        @ R1 = R2 << 1

5、右移指令 LSR

LSR R1, R2, 1        @ R1 = R2 >> 1

三、拓展指令

上述指令都是可以在C语言中找到对应的,汇编语言也存在自己独有的指令

1、位清零指令 BIC

位清零可以将 “指定比特位” 置 0

MOV R2, #0xFF            @ R2 = 0xFF    
BIC R1, R2, #0x0F        @ 将R2后四位清零,结果放入 R1 =》 R1 = R2 & (~0x0F)

R2 中保存的是 0xFF,转化成二进制:1111 1111

0x0F 转换成二进制形式:                    0000 1111

最终结果:                                            1111 0000

0x0F后四位是1,说明要把R2后四位置 0,得到的运算结果放入 R1(0xF0)

2、运算指令与其他指令的混合使用

MOV R1, R2, LSL #1     

MOV 的格式是 MOV  <目标寄存器>  <第一操作数>

  • 目标寄存器:R1
  • 第一操作数:R2, LSL #1    
    • 这里已经可以猜出个大概了,其实就是LSL将R2寄存器左移1位,其结果作为第一操作数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搭建zabbix并分离

目录 &#x1f951;理论部分 &#x1f951;实验部分 &#x1f336;️安装zabbix &#x1f336;️部署zabbix &#x1f336;️配置zabbix &#x1f955;1. 修改语言 &#x1f955;2. 监控linux端 &#x1f336;️分离zabbix 理论部分 1. 监控知识概述 &#xff08;1&#xff0…

消息队列中间件

如何保证消息的顺序性 我举个例子&#xff0c;我们以前做过一个 mysql binlog 同步的系统&#xff0c;压力还是非常大的&#xff0c;日同步数据要达到上亿&#xff0c;就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去&#xff08;mysql -> mysql&#xff…

【AI with ML】第 8 章 :使用 TensorFlow 创建文本

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

开源项目-仓库管理系统

哈喽&#xff0c;大家好&#xff0c;今天给大家带来一个仓库管理系统 系统主要包括客户管理&#xff0c;供应商管理&#xff0c;商品管理&#xff0c;进货管理&#xff0c;退货管理&#xff0c;销售管理&#xff0c;销售退货管理等模块 技术选型 后台技术选型 SpringBoot Sh…

PHP ktv点歌管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP ktv点歌管理系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据库为 mysql5.0&#xff0c;使用php语言开发。 P…

语义表示法

思路方案 在安全领域的研究中我们发现&#xff0c;很多数据预处理的步骤&#xff0c;在不同的场景下中都可以相互 借鉴&#xff0c;甚至可以进行直接复用。例如&#xff0c;对于加密流量相关的数据&#xff0c;当算法工程师 获取到一批加密流量的 pcap 包之后&#xff0c;不论他…

详解即时通讯音视频开发实时语音通讯丢包补偿技术

即时通讯应用中的实时音视频技术&#xff0c;几乎是IM开发中的最后一道高墙。原因在于&#xff1a;实时音视频技术 音视频处理技术 网络传输技术 的横向技术应用集合体&#xff0c;而公共互联网不是为了实时通信设计的。 现如今&#xff0c;随着移动互联网越来越普及&#xf…

【复习笔记】计算机组成原理复习重点——篇六

计算机组成原理复习重点笔记 第三篇 中央处理器 第6章 计算机的运算方法第7章 指令系统第8章 CPU的结构和功能 第&#xff16;章 计算机的运算方法 6.1 无符号数和有符号数 6.2 数的定点表示和浮点表示 6.3 定点运算 6.4 浮点四则运算 6.5 算术逻辑单元 6.1 定点数的表示 真值…

【JAVA程序设计】基于JAVA Swing的飞机票订票系统-有报告

基于JAVA Swing的飞机票订票系统零、项目获取一、项目简介二、开发环境三、项目结构四、运行截图零、项目获取 获取方式&#xff08;点击下载&#xff09;&#xff1a;是云猿实战 项目经过多人测试运行&#xff0c;可以确保100%成功运行。 一、项目简介 本项目是基于JAVA Sw…

华玉通软“雨燕”通信中间件通过德国莱茵TÜV ISO 26262 ASILD级功能安全产品认证

华玉通软&#xff08;下称“华玉”&#xff09;今天宣布“雨燕”通信中间件&#xff08;SWIFT DDS&#xff09;已通过独立第三方检测、检验和认证机构----德国莱茵TV集团&#xff08;下称*TV莱茵*&#xff09;的ISO 26262 ASIL D级功能安全产品认证&#xff0c;成为国内首个基于…

【简单项目实战】用C++实现学生成绩管理系统 | [面向对象]

目录 ●功能介绍 ●案例 ●代码展示 ●结果展示 ●功能介绍 用 C设计一个程序&#xff0c;能提供下列功能: 1. 录入学生成绩信息。按照学号&#xff0c;姓名&#xff0c;语文&#xff0c;数学&#xff0c;英语的格式录入学生的成绩。 2.展示目前录入学生的成绩信息。以学…

丰立智能深交所上市:市值33亿 王友利家族色彩浓厚

雷递网 雷建平 12月15日浙江丰立智能科技股份有限公司&#xff08;简称&#xff1a;“丰立智能”&#xff0c;证券代码&#xff1a;301368&#xff09;今日在深交所创业板上市。丰立智能本次发行股票3010万股&#xff0c;发行价为22.33元&#xff0c;募资6.72亿元。丰立智能开盘…

java+控制台-学生选课管理系统

java控制台-学生选课管理系统一、系统介绍二、功能展示1.用户登陆2.管理员3.老师.学生四、其它1.其他系统实现2.获取源码一、系统介绍 系统实现了: 管理员&#xff1a; 1.管理课程 2.管理教师 3.管理学生 4.修改管理员密码 5.修改管理员名称 0.退出 老师&#xff1a; 1.修改密…

使用Maven创建多模块父子Spring Boot工程

使用Maven创建Spring Boot工程_紫月下枫叶的博客-CSDN博客目录1、开发环境2、创建普通maven工程3、添加Spring Boot父工程4、添加Web场景依赖5、添加主程序6、添加Controller7、添加配置文件8、运行服务9、浏览器访问服务1、开发环境IDE&#xff1a;IntelliJ IDEA 2020.3.4JDK&…

【VScode插件开发】<一>开发环境准备

VScode作为一款轻量级的IDE开发工具&#xff0c;非常好用&#xff0c;也是跨平台&#xff0c;对于习惯在命令行敲代码的人来说&#xff0c;简直不要太优秀。 VScode强大的一点就在于能够支持各种插件&#xff0c;对于一个想自己倒腾的程序员来说&#xff0c;能自己定义自己的写…

STM8开发实例-UART及重定向

UART及重定向 文章目录 UART及重定向1、UART简单介绍2、硬件准备3、软件准备4、驱动实现4.1 UART1基本定义4.2 驱动函数实现4.2.1 UART1驱动实现4.2.2 UART3驱动实现5、串口重定向1、UART简单介绍 串行通信可能是最常用的经典通信方法,用于将 PC 或其他机器与 micro 接口。 只…

如何将PDF转换为PPT?2个免费好用的pdf转ppt工具

这个教程教你如何将PDF文件变成PowerPoint演示文稿文件。有几个不同的免费在线网站&#xff0c;您可以使用它们将PDF转换为PowerPoint演示文稿。请记住&#xff0c;扫描的 PDF&#xff08;如扫描到计算机中的文档&#xff09;无法转换为可编辑的 PowerPoint 演示文稿。 方法1、…

(五)本地镜像发布到私有库将私有库上的镜像下载到本地

目录 一、下载镜像Docker Registry 二、运行私有库Registry 三、创建一个新镜像&#xff0c;例如&#xff1a;ubuntu安装ifonfig命令 四、curl验证私服库上有什么镜像 五、将新镜像修改符合私服规范的tag 六、修改配置文件使之支持http 七、push推送到私服库 八、curl再…

Anaconda和python是什么关系?

【anaconda】指的是一个开源的【Python】发行版本&#xff0c;是一个安装、管理【python】相关包的软件&#xff0c;自带了【python、Jupyter Notebook编辑器、Spyder、conda】等工具&#xff0c;常见的科学计算类的库都包含在里面了&#xff0c;使得安装比常规【python】安装要…

BI@report钻取操作

1.创建的表为浮动表 注意设置成浮动维单元格 把东西都选在红色框框里面 2.在对需要进行钻取的表元设置 设置参数 注意 参数是传递用的&#xff0c;值取的是当前表的值&#xff0c;这样参数可以带着这个表的值往下传 使用的是SQL数据源 在最后加上这行代码 having rso1.par…