当前位置: 首页 > news >正文

汇编的指令

减法类指令:

不带借位的减法:

sub dest,src;dest=(dest)-(src)

注意: 1、源操作数和目的操作数不能同时为段寄存器或存储单元

            2、对标志位有影响,主要影响CF、ZF、OF、SF。

带借位的减法:

sbb dest,src;dest=(dest)-(src)-(CF)

 注意: 1、源操作数和目的操作数不能同时为存储单元。

             2、段寄存器不能进行算数运算。

 减一指令:

dec reg/mem;reg表示寄存器,mem表示存储单元

注意:操作数不能为立即数。 

取补指令:

neg reg/mem;reg/mem=0-(reg)/(mem)

取补指令是对该数逐位取反(包括符号位)后加一,相当于取相反数。

 注意:操作数不能为立即数。 

NEG对标志位的影响 

CF:当OPFRG=0时 CF=0 否则CF=1

OF;当OPFRG为负的最小值时OF=1否则OF=0

 比较指令:

cmp dest,srg;比较dest和srg的大小

 用dest减去srg并根据结果改变标志位,但不记录相减结果。

若执行指令后:ZF=1,则说明两个数相等,因为zero为1说明结果为0.

   当无符号时:

   若CF=1,则说明了有进位或借位,cmp是进行的减操作,故可以看出为借位,所以,此时oprd1<oprd2;

   CF=0,则说明了无借位,但此时要注意ZF是否为0,若为0,则说明结果不为0,故此时oprd1>oprd2.

   当有符号时:

   若SF=0,OF=0 则说明了此时的值为正数,没有溢出,可以直观的看出,oprd1>oprd2;

   若SF=1,OF=0 则说明了此时的值为负数,没有溢出,则为oprd1<oprd2;

   若SF=0,OF=1 则说明了此时的值为正数,有溢出,可以看出oprd1<oprd2;

   若SF=1,OF=1则说明了此时的值为负数,有溢出,可以看出oprd1>oprd2;(来自CSDN)

 进位和溢出的区别:某种意义上来说of是表示有符号数的溢出,cf是表示无符号数的溢出。

(来自CSDN) 

乘法:

无符号的乘法:

mul mem/reg;操作数不能为立即数

 功能:完成两个不带符号的八位或十六位数字相乘,乘积存放在ah、al或dx、ax中。例:被乘数是bl默认乘数为al,乘积存放在ah、al中;被乘数为bx乘数默认为ax,乘积存放在dx,ax中。如果乘积的高半部分不为零,则 MUL 会把进位标志位和溢出标志位置改为1。目的操作数只能是通用寄存器。

;以下均为16进制
mov ax,1001
mov bx,2
mul bl ;此时ax=0002mov ax,1024
mov bx,2
mul bx ;此时ax=2048,dx=0000mov ax,1024
mov bx,100
mul bx ;此时ax=4800,dx=0020

有符号数的乘法:

imul ax,bx;ax=(ax)*(bx)

 功能:完成两个不带符号的八位或十六位数字相乘,乘积存放在ah、al或dx、ax中。例:被乘数是bl默认乘数为al,乘积存放在ah、al中;被乘数为bx乘数默认为ax,乘积存放在dx,ax中。如果乘积的高半部分不为零,则 MUL 会把进位标志位和溢出标志位置改为1。目的操作数只能是通用寄存器。

除法指令

无符号数的除法:

mov ax,10
mov bx,3
div bl;ax=0105mov ax,10
mov bx,3
div bx;ax=0005 bx=0001 

1、如果被除数为16位除数为8位,则被除数默认存储在ax中,如果被除数为32位除数为16位,默认被除数高位存储在dx中低位存储在ax中。

2、如果除数为8位那么商默认存储在al中,余数存储在ah中。

3、如果除数为16位那么商默认存储在ax中,余数存储在dx中

有符号数的除法:

idiv src

同上 

 除法指令的特殊情况:

1、除数为零

2、除数溢出,例如:

mov ax,1000
mov bl,2
div bl;此时中断标志更改

BCD调整指令:

请看博客园

逻辑运算

逻辑与and

逻辑或or

异或xor

逻辑非not:求反码

test:将两个操作数按位与,只保留标识符不保留运算结果。经常用于判断测试位是否为零。

移位和循环移位指令

算数移位指令:

SAL为算数左移指令,算数左移一次或cl指定次数。

SAR为算数右移指令,算数右移一次或cl指定次数。

算数移位代表有符号数的乘二除二。

逻辑移位指令

SHL为算数左移指令,算数左移一次或cl指定次数。

SAL为算数右移指令,算数右移一次或cl指定次数

逻辑移位和算术移位的区别:

  • 逻辑移位

逻辑移位是指逻辑左移和逻辑右移,移出的空位都用0来补。

  • 算术移位

算术移位 就需要分有符号型值和无符号型值
对于无符号型值,算术移位等同于逻辑移位。
而对于有符号型值 ,算术左移等同于逻辑左移,算术右移补的是符号位,正数补0,负数补1

(来自CSDN)

OF:当移动次数为1时若操作改变了最高位OF为1,否则为0,其余情况无意义

循环移位

带进位:RCL、RCR。

不带进位:ROL、ROR。

相关文章:

汇编的指令

减法类指令&#xff1a; 不带借位的减法&#xff1a; sub dest,src;dest(dest)-(src) 注意&#xff1a; 1、源操作数和目的操作数不能同时为段寄存器或存储单元 2、对标志位有影响&#xff0c;主要影响CF、ZF、OF、SF。 带借位的减法&#xff1a; sbb dest,src;dest(dest)-(…...

《数据结构、算法与应用C++语言描述》使用C++语言实现数组队列

《数据结构、算法与应用C语言描述》使用C语言实现数组队列 定义 队列的定义 队列&#xff08;queue&#xff09;是一个线性表&#xff0c;其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾&#xff08;back或rear&#xff09;&#xff0c;删除元素的那一端称…...

零基础如何学习自动化测试

现在很多测试人员有些急于求成&#xff0c;没有任何基础想当然的&#xff0c;要在一周内上手自动化测试。 在自动化的过程中时候总有人会犯很低级的问题&#xff0c;有语法问题&#xff0c;有定位问题&#xff0c;而且有人居然连__init__.py 文件名都弄错误&#xff0c;还有将…...

系统架构师备考倒计时16天(每日知识点)

1.信息化战略与实施 2.UML图&#xff08;12个&#xff09; 3.结构化设计&#xff08;耦合&#xff09; 4.SMP与AMP的区别&#xff08;多核处理器的工作方式&#xff09; 多核处理器一般有SMP和AMP两种不同的工作方式: SMP(对称多处理技术)&#xff1a;将2颗完全一样的处理器封…...

【MySQL系列】- Select查询SQL执行过程详解

【MySQL系列】- Select查询SQL执行过程详解 文章目录 【MySQL系列】- Select查询SQL执行过程详解一、SQL查询语句的执行过程二、SQL执行过程详解2.1. 连接器2.2. 查询缓存2.3. 分析器2.4. 优化器2.5. 执行器 三、undo log 和 redo log作⽤3.1. redo log &#xff08;重做日志&a…...

软考高级信息系统项目管理师系列之:信息系统项目管理师论文评分参考标准

软考高级信息系统项目管理师系列之:信息系统项目管理师论文评分参考标准 论文满分是 75 分,论文评分可分为优良、及格与不及格 3 个档次。评分的分数可分为: 60 分至 75 分优良(相当于百分制 80 分至 100 分)。45 分至 59 分及格(相当于百分制 60 分至 79 分)。0 分至 44 分…...

MyBatis--多案例让你熟练使用CRUD操作

目录 一、前期准备 二、两种实现CRUD方式 三、增加数据&#xff08;INSERT&#xff09; 四、删除数据&#xff08;DELETE&#xff09; 五、查询数据&#xff08;SELECT&#xff09; 六、更新数据&#xff08;UPDATE&#xff09; 一、前期准备 1.创建maven项目并在pom文件…...

用Python造轮子

目录 背景安装setuptools库准备要打包的代码创建setup.py文件打包生成whl文件把库装到电脑上使用这个库 背景 如何把自己写的代码&#xff0c;打包成库方便其他人使用 安装setuptools库 正所谓想要富先修路&#xff0c;先把造轮子要用的库装上 pip install wheel pip insta…...

ARM 堆栈寻址类型区分

文章目录 堆栈指向分类堆栈指向数据分类满递增与满递减空递增与空递减 堆栈指向分类 根据堆栈指针的指向的方向不同&#xff0c;可以划分为向上生成型和向下生成型。 向上生成型&#xff1a; 随着数据的入栈&#xff0c;堆栈的指针逐渐增大&#xff0c;称为&#xff1a;递增…...

每日一练 | 网络工程师软考真题Day43

1、在生成树协议〔STP〕IEEE 802.1d中&#xff0c;根据 来选择根交换机。 A&#xff0e;最小的MAC地址 B&#xff0e;最大的MAC地址 C&#xff0e;最小的交换机ID D&#xff0e;最大的交换机ID 2、在快速以太网物理层标准中&#xff0c;使用两对5类无屏蔽双绞线的是 。 A&…...

jsonXML格式化核心代码

json格式化&#xff1a; 依赖&#xff1a; <dependency><groupId>com.jayway.jsonpath</groupId><artifactId>json-path</artifactId><version>2.6.0</version><scope>compile</scope> </dependency> string t…...

PTQ量化和QAT量化

目录 1--PTQ量化 2--QAT量化 1--PTQ量化 PTQ量化表示训练后量化&#xff08;Post Training Quantization&#xff09;。使用一批校准数据对训练好的模型进行校准&#xff0c;将训练好的FP32网络直接转换为定点计算的网络&#xff0c;过程中无需对原始模型进行任何训练&#x…...

【Django 02】数据表构建、数据迁移与管理

1. Django 构建数据表创建与数据迁移 1.1 数据表创建 1.1.1 模块功能 如前所述&#xff0c;models.py文件主要用一个 Python 类来描述数据表。运用这个类,可以通过简单的 Python 代码来创建、检索、更新、删除 数据库中的记录而无需写一条又一条的SQL语句。今天的例子就是在…...

一天吃透Java集合面试八股文

内容摘自我的学习网站&#xff1a;topjavaer.cn 常见的集合有哪些&#xff1f; Java集合类主要由两个接口Collection和Map派生出来的&#xff0c;Collection有三个子接口&#xff1a;List、Set、Queue。 Java集合框架图如下&#xff1a; List代表了有序可重复集合&#xff0c…...

高级深入--day36

Settings Scrapy设置(settings)提供了定制Scrapy组件的方法。可以控制包括核心(core),插件(extension),pipeline及spider组件。比如 设置Json Pipeliine、LOG_LEVEL等。 参考文档:Settings — Scrapy 1.0.5 文档 内置设置参考手册 BOT_NAME 默认: scrapybot 当您使用 sta…...

Jmeter接口测试工具的一些使用小技巧

如何使用英文界面的JMeter Jmeter启动时会自动判断操作系统的locale 并选择合适的语言启动&#xff0c;所以&#xff0c;我们启动jmeter后&#xff0c;其会出现一个倍感亲切的中文界面。但由于jmeter本身的汉化工作做得不好&#xff0c;你会看到有未被汉化的选项及元件的参数。…...

黄金眼PAAS化数据服务DIFF测试工具的建设实践 | 京东云技术团队

一、背景介绍 黄金眼PAAS化数据服务是一系列实现相同指标服务协议的数据服务&#xff0c;各个服务间按照所生产指标的主题作划分&#xff0c;比如交易实时服务提供实时交易指标的查询&#xff0c;财务离线服务提供离线财务指标的查询。黄金眼PAAS化数据服务支撑了黄金眼APP、黄…...

深入了解RPA业务流程自动化的关键要素

在RPA业务流程自动化实施过程中&#xff0c;哪些因素起着至关重要的作用&#xff1f;这其实没有一个通用的答案&#xff0c;每一个RPA业务流程自动化的部署&#xff0c;都需要结合具体场景去调整&#xff0c;并且进行全面的规划。 首当其冲是要关注以下几点&#xff1a; 1、专…...

CSS记录

1.标准的CSS的盒子模型&#xff1f;与低版本IE的盒子模型有什么不同的&#xff1f; 标准盒子模型box-sizing: border-box; 宽度内容的宽度&#xff08;content&#xff09; border padding margin 低版本IE盒子模型&#xff1a;宽度内容宽度&#xff08;contentborderpaddin…...

Kotlin中类型转换

在 Kotlin 中&#xff0c;类型转换是一种常见的操作&#xff0c;用于将一个数据类型转换为另一个数据类型。在本篇博客中&#xff0c;我们将介绍 Kotlin 中的类型转换&#xff0c;并提供示例代码演示智能类型转换、强制类型转换以及可空类型的转换。 智能类型转换是 Kotlin 中…...

P7557 [USACO21OPEN] Acowdemia S

典型二分&#xff1a; #include<bits/stdc.h> using namespace std; #define int long long const int N1e510; int n,a[N],k,l; bool check(int x) {int cnt0,ans0;for(int i1; i<x; i) {if(a[i]>x) {cnt;continue;}else{if(x-a[i]>k)return false;else{ansans…...

如何确认栈中申请的变量地址

一般一个程序被加载到内存后执行而成为一个进程。进程在内存中是分区域加载的&#xff0c;分别是代码段、数据段、bss段等等。 函数中定义的变量一般存在于栈中。现在我们通过实验验证一下&#xff0c;函数中定义的变量&#xff0c;到底存在与进程哪个位置。 1.测试程序 #in…...

【STM32】--基础了解

一、STM32来历背景 1.从51到STM32 &#xff08;1&#xff09;单片机有很多种 &#xff08;2&#xff09;STM32内核使用ARM&#xff0c;但是ARM不一定是STM32 &#xff08;3&#xff09;ATM32是当前主流的32位高性能单片机 &#xff08;4&#xff09;STM32的特点&#xff1a;高…...

join、inner join、left join、right join、outer join的区别

内连接 inner join(等值连接)&#xff1a;只显示两表联结字段相等的行&#xff0c;(很少用到&#xff0c;最好别用)&#xff1b; 外连接 left join&#xff1a;以左表为基础,显示左表中的所有记录,不管是否与关联条件相匹配,而右表中的数据只显示与关联条件相匹配的记录,不匹配…...

小程序中如何使用自定义组件应用及搭建个人中心布局

一&#xff0c;自定义组件 从小程序基础库版本 1.6.3 开始&#xff0c;小程序支持简洁的组件化编程。所有自定义组件相关特性都需要基础库版本 1.6.3 或更高。 开发者可以将页面内的功能模块抽象成自定义组件&#xff0c;以便在不同的页面中重复使用&#xff1b;也可以将复杂的…...

pyest+appium实现APP自动化测试,思路全总结在这里

01、appium环境搭建 安装nodejs http://nodejs.cn/ 为什么要安装nodejs&#xff1f; 因为appium这个工具的服务端是由nodejs语言开发的 安装jdk&#xff0c;并且配置环境变量 为什么要装jdk&#xff1f; 因为我们要测试安卓&#xff0c;那么安卓的调试环境需要依赖jdk …...

ES6 Set数据结构

1.Set 是什么 Set是新的引用型的数据结构 它类似于数组&#xff0c;但是成员的值都是唯一的&#xff0c;没有重复的值。 Set本身是一个构造函数&#xff0c;用来生成 Set 数据结构。 Set函数可以接受一个数组作为参数&#xff0c;用来初始化。 2.Set特性&#xff08;重点概…...

Semaphore(信号量)

信号量就是通过AQS的共享锁机制来实现的。这个类总体比较简单&#xff0c;就不做过多描述。 Sync同步器 abstract static class Sync extends AbstractQueuedSynchronizer {private static final long serialVersionUID 1192457210091910933L;//初始化permits许可数&#xf…...

InnoDB 与 MyISAM的比较(含其他存储引擎)

文章目录 什么是搜索引擎MyISAMInnoDB比较表格 MySQL从3.23.34a开始就包含InnoDB存储引擎。 大于等于5.5之后&#xff0c;默认采用InnoDB引擎 。 什么是搜索引擎 MySQL的存储引擎是用于管理数据的底层系统组件&#xff0c;它定义了数据如何存储、检索和管理。不同的存储引擎提…...

系统韧性研究(2)|系统韧性如何关联其他质量属性?

对大多数人来说&#xff0c;如果一个系统在逆境中继续执行它的任务&#xff0c;那么它会被认为具有韧性。换句话说&#xff0c;尽管过度的压力或多或少都会导致系统中断&#xff0c;但如果系统依然能够正常运行并提供所需的能力&#xff0c;则可认为该系统具备韧性。 系统韧性…...