DJ12-2-2 算术运算指令

news2025/1/16 18:58:37

目录

1. 加法指令

(1)ADD 指令

(2)ADC 指令

(3)INC 指令

2. 减法指令

(1)SUB 指令

(2)SBB 指令

(3)DEC 指令

(4)NEG 求补指令

(5)CMP 比较指令

3. 乘法指令

(1)MUL 无符号数乘法指令

(2)IMUL 有符号数乘法指令  

4. 除法指令


 

1. 加法指令

源操作数:通用寄存器、存储器、立即数。

目的操作数:通用寄存器、存储器。

注意:源操作数和目的操作数不能同时是存储器操作数。

(1)ADD 指令

格式:ADD  OPRD1,OPRD2

执行:OPRD1 + OPRD2 → OPRD1

ADD 指令的执行会影响全部 6 个状态标志位。

例题、 分析下列指令是否合法。

例题、分析指令执行后 6 个状态标志位的状态。

看似我们把红色标出的进位扔掉了,实则进位到了 CF 里面。

(2)ADC 指令

格式:ADD  OPRD1,OPRD2

执行:OPRD1 + OPRD2 + CF → OPRD1

特点:ADC 指令主要用于多字节加法运算,高 16 位或高 8 位相加时,必须考虑低 16 位或低 8 位产生的进位。

ADC 指令的执行会影响全部 6 个状态标志位。

例、现有两个 32 位无符号数 12345678H、8765ABCDH 相加,其和仍然为一个 32 位无符号数。要求和的高 16 位送入 DX 中,和的低 16 位送入 AX 中。

 在字母串前加个 0,代表这是一个数,防止混淆。

(3)INC 指令

格式:INC  OPRD

执行:OPRD + 1 → OPRD

特点:是单操作数指令,其目的操作数不能是立即数。

INC 指令的执行会影响 5 个状态标志位,除了 CF 位。

2. 减法指令

源操作数:通用寄存器、存储器、立即数。

目的操作数:通用寄存器、存储器。

注意:源操作数和目的操作数不能同时是存储器操作数。

(1)SUB 指令

格式:SUB  OPRD1,OPRD2

执行:OPRD1 - OPRD2 → OPRD1

SUB 指令的执行会影响全部 6 个状态标志位。

(2)SBB 指令

格式:SUB  OPRD1,OPRD2

执行:OPRD1 - OPRD2 - CF → OPRD1

特点:SBB 指令主要用于多字节减法运算,高 16 位或高 8 位相减时,必须考虑低 16 位或低 8 位产生的借位。

SBB 指令的执行会影响全部 6 个状态标志位。

(3)DEC 指令

格式:DEC  OPRD

执行:OPRD - 1 → OPRD

DEC 指令的执行会影响 5 个状态标志位,除了 CF 位。

因为 INC 和 DEC 均不会影响 CF 位,所以不要试图用它们判断 CF 位内容。

(4)NEG 求补指令

格式:NEG  OPRD

执行:0 - OPRD → OPRD

老师举的例子:

NEG 指令的执行会影响全部 6 个状态标志位。

① 对进位标志 CF 的影响

只有当操作数为零时,进位标志 CF 被置零;其它情况进位标志 CF都被置 1,即均有借位。

② 对溢出标志 OF 的影响

当字节操作数为 -128(80H),或字操作数为 -32768(8000H)时,结果将无变化,但溢出标志 OF 被置 1。

实质:

(5)CMP 比较指令

格式:CMP  OPRD1,OPRD2

执行:OPRD1 - OPRD2 (操作数本身不会发生变化哟~)

特点:用于比较两个数的大小,可以作为条件转移指令的转移条件。

说明:对 FLAGS 有影响的运算都可以作为条件转移指令的转移条件。

CMP 指令的执行会影响全部 6 个状态标志位。

表1、

表2、

(1) 比较两个无符号数的大小

当 A > B 时,A - B 不产生借位,且结果不为 0,即 CF = 0 且 ZF = 0 。

当 A = B 时,则 ZF = 1 。

当 A < B 时,A - B 产生借位,且结果不为 0,即 CF = 1 且 ZF = 0 。

(2) 比较两个有符号数的大小

当 A > B 时:

① A 和 B 都是负数。

若 A > B,那么 A - B 一定为正数,且不会发生溢出,且结果不为 0,即 SF = 0 且 OF = 0 且 ZF = 0 。

② A 和 B 都是正数。

若 A > B,那么 A - B 一定为正数,且不会发生溢出,且结果不为 0,即 SF = 0 且 OF = 0 且 ZF = 0 。

③ A 为正,B 为负。

显然 A > B 且结果不为 0 。

若不发生溢出,则 A - B 为正数。即 SF = 0 且 OF = 0 且 ZF = 0 。

若发生溢出,则 A - B 为负数。即 SF = 1 且 OF = 1 且 ZF = 0 。

综上,SF ⊕ OF = 0 且 ZF = 0 时,A > B 。

当 A < B 时:

① A 和 B 都是负数。

若 A < B,那么 A - B 一定为负数,且不会发生溢出,且结果不为 0,即 SF = 1 且 OF = 0 且 ZF = 0 。

② A 和 B 都是正数。

若 A < B,那么 A - B 一定为负数,且不会发生溢出,且结果不为 0,即 SF = 1 且 OF = 0 且 ZF = 0 。

③ A 为负,B 为正。

显然 A < B 且结果不为 0 。

若不发生溢出,则 A - B 为负数。即 SF = 1 且 OF = 0 且 ZF = 0 。

若发生溢出,则 A - B 为正数。即 SF = 0 且 OF = 1 且 ZF = 0 。

综上,SF ⊕ OF = 1 且 ZF = 0 时,A < B 。

当 A = B 时,有 ZF = 1 。

例题、在内存数据段从 DATA1 开始的存储单元存放了两个 8 位的无符号数。试比较它们的大小,并将大的数送 MAX 存储单元。

3. 乘法指令

要求:OPRD 为通用寄存器或存储器,不能为立即数。 

乘法指令采用隐含寻址,隐含的是存放被乘数的累加器 AL 、 AX 及存放结果的 AX、DX。

若运算结果的高半部分(AH 或 DX)是无效数值,则 OF = CF = 0,否则 OF = CF = 1。

说人话:按理说 8 位 × 8 位得到一个 16 位,但是有些结果用 8 位就能表示,因此其高半部分是无效数值。

(1)MUL 无符号数乘法指令

格式:MUL  OPRD

执行:

  • 字节乘法:OPRD × AL → AX
  • 字乘法:OPRD × AX → DX:AX

特点:若结果的 AH(字节运算)或 DX(字运算)为全 0,则 CF = OF = 0,否则 CF = OF = 1。

MUL 只会影响 CF 位和 OF 位。

(2)IMUL 有符号数乘法指令  

格式:IMUL  OPRD

执行:

  • 字节乘法:OPRD × AL → AX
  • 字乘法:OPRD × AX → DX:AX

特点:若结果的 AH(字节运算)或 DX(字运算)为低半部分的符号扩展,则 CF = OF = 0,否则 CF = OF = 1。

说人话:若两数同号,则高半部分为全 0;若两数异号,则高半部分为全 1 。

4. 除法指令

要求:OPRD 为通用寄存器或存储器,不能为立即数。 

除法指令要求被除数的字长必须是除数的两倍;

除法指令采用隐含寻址,若除数为 8 位,则被除数为 AX;若除数为 16 位,则被除数高位在 DX 中,低位在 AX 中。

格式:

  • DIV  OPRD
  • IDIV  OPRD

执行:

  • 字节乘法:AX ÷ OPRD → AL(商)AH(余数)
  • 字乘法:DX:AX ÷ OPRD → AX(商)DX(余数)

除法指令对标志位均无影响。

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

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

相关文章

Alluxio 2.9新版发布 | 重塑架构,支持大规模多租户环境

/ Alluxio宣布正式发布数据编排平台2.9版本 / Alluxio 2.9 版本的主要新增功能包括: 新增跨环境集群同步功能、增强Alluxio在Kubernetes上的可管理性、提高S3 API 安全性和用户体验 2022年11月17日,全球首创的开源数据编排软件开发商Alluxio宣布正式发…

1.2 分布

测度理论 (Durrett) 第五版 个人笔记 答案 Durrett高等概率论教材 (Probability) 攻读概率及统计/机器学习应用方向博士学位. Measure TheoryProbability SpacesDistributionsRandom VariablesIntegrationProperties of the IntegralExpected ValueProduct Measures, Fubini’…

[计算机毕业设计]机器视觉指纹识别图像识别

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

2022Q3运动户外行业数据分析(高增长概念解读)

本篇我们将继续来分析22年Q3季度中,运动户外行业的高增长概念。 在运动户外行业中,我们发现了3个高增长品类,分别是:泳镜、运动休闲鞋、运动包。 一、游泳用品高增长概念——泳镜 在功能上区分,泳镜可以分为竞速泳镜、…

十秒钟搞懂linux的软硬链接细节图解和目录结构文件的基本命令

秒懂linux链接图解一,软硬链接的分析1,软链接的图解:2,硬链接的图解3,软硬链接的区别4,目录创建软链接的语法格式二,linxu的根目录结构示意图和各部分的功能,可以根据单词部分记忆(部…

SDN环境搭建(超详细)

文章目录前言一. 安装VMware workstation二、Ubuntn安装三、Mininet安装四、RYU安装五、WireShark安装六、在Mininet中启动可视化界面常见问题总结写在后面前言 最近在做SDN这方面的实验,在这里记录一下自己的学习过程和踩过的坑。 具体环境: VMware-wo…

RepGhost

轻量级的CNN模块重参数化技术构建硬件高效的 Ghost 模块,通过结构重新参数化技术开发一种硬件高效的 RepGhost 模块,以实现特征的隐式重用。RepGhostNet 把 Concat 操作去掉,同时修改现有结构以满足重参数化的规则。最终得到的 RepGhostNet 是一个高效的…

swift-类属性-MachO读取

上一篇 swift-类属性 为源码层面类属性结构剖析,接下来从MachO层面验证读取类属性内容 极简类结构 class IFLPerson2 {var age: Int 20var heigh: Double 180}MachO-__swift5_types读取 var size: UInt 0//__swift5_types section 的pFilevar ptr getsectdata(…

Alibaba内部传出的面试秘技,秋招offer尽收囊中

又逢“金九银十”,年轻的毕业生们满怀希望与忐忑,去寻找、竞争一个工作机会。已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而,面试人群众多,技术市场却相对冷淡,…

修改Cmder默认命令提示符

修改Cmder默认命令提示符常规操作第二种方法我的方法参考常规操作 打开在Cmder目录下的vendor文件夹,编辑里面的clink.lua文件找到local lambda “λ”,将“λ”修改为“$”,如图(图片来源:https://www.jianshu.com/…

11月“图无处不在”线上直播 - Neo4j宣布下一代图数据平台Neo4j 5上线

中国北京,2022年11月10日—— 图技术的领导者Neo4j 宣布下一代可用于云端的图数据平台Neo4j 5上线。在传统数据库的基础上,扩大了原生图的性能优势,同时在本地、云、混合云或多云部署中实现更高可扩展性,从而使企业能够更快地创建…

Java 集合---尚硅谷Java入门视频学习

问题:什么时候需要一个容纳数据的容器,也就是集合对象? Java集合框架中就包含了对不确定个数的数据处理的集合类问题:如果只是为了容纳数据,可以是直接使用数组,为什么要学习集合? 数组使用起来…

【论文阅读】多模态模型CoCa

Introduction 在这项工作中,我们统一了单编码器、双编码器和编码器-解码器范式,并训练了一个包含三种方法优点的图像-文本基础模型。我们提出了对比Captioner模型(CoCa),该模型采用经过对比损失和captioning损失训练的编码器-解码器架构。如图…

C语言源代码系列-管理系统之职工工资管理系统

往期文章分享点击跳转>《导航贴》- Unity手册,系统实战学习点击跳转>《导航贴》- Android手册,重温移动开发 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过…

数据存储策略——lsm-tree

文章目录一、背景二、lsm-tree简介三、lsm-tree设计思想四、lsm-tree原理1.写操作2.读操作3.有序表持久化4.后台压缩五、lsm-tree的应用六、lsm-tree优缺点分析总结一、背景 由于传统机械磁盘的原理,它在读写时有个寻道的操作,在读写时都需要消耗一个寻…

基于PHP+MySQL网上报名系统的设计与实现

一直以来如何更好的实现校园现代化和信息化是当前很多高校一直探索的问题,随着时代的发展,高校内各类考试和报名也越来越多,如何通过互联网直接进行在线报名是本系统研究的一个重点内容。 本系统是一个网上报名系统,为了能够更加灵…

[计算机毕业设计]机器学习的数据驱动股票价格预测

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

财政政策与货币政策(下)

财政政策与货币政策(下) – 潘登同学的宏观经济学笔记 文章目录财政政策与货币政策(下) -- 潘登同学的宏观经济学笔记粘性价格下的货币经济总供给曲线总供给曲线斜率与价格粘性菲利普斯曲线的消失货币政策的“动态不一致”财政政策与货币政策的配合财政主导 vs. 货币主导恶性通…

【学习记录】实例分割的发展与区别

【学习记录】实例分割的发展与区别 参考于《The Evolution Of Instantce Segmentation》 文章目录【学习记录】实例分割的发展与区别发展历程RCNNFast RCNNMultipath NetworkFaster RCNNMask RCNN发展历程 RCNN 开发集成了RCNN技术产生了AlexNet,以及使用选择性搜索…

浅谈App的启动优化

1. 应用启动的方式 在Android中,应用启动一般可分为三种:冷启动、温启动、热启动。 那么什么是冷启动、温启动和热启动呢?下面我们来简单看一下它们的定义: 冷启动:当启动应用时,后台没有该应用的进程。这…