汇编语言-adc、sbb以及cmp指令

adc指令:

adc 是带进位加法指令,它利用了CF位上记录的进位值

指令格式: adc 操作对象1,操作对象2

功能: 操作对象1 = 操作对象1 + 操作对象2 + CF

例如指令 adc ax,bx 实现的功能是: (ax)=(ax)+(bx)+CF

例如:


mov ax,2
mov bx,1
sub bx,ax
adc ax,1

执行后,(ax)=4 。 adc执行时,相当于计算: (ax)+1+CF = 2+1+1 = 4

add ax, dx;    —> ax = ax+dx

adc ax, dx;    —-> ax = ax+dx+carry(进位)

sub ax, dx;  —-> ax = ax - dx

sbb ax, dx; ——> ax = ax - dx - carry


sbb指令:

sbb是带借位减法指令,它利用了CF位上记录的借位值。

指令格式:sbb 操作对象1,操作对象2

功能:操作对象1 = 操作对象1 - 操作对象2 - CF

SBB与SUB的区别

SUB AX,BX 的结果是 AX-BX

SBB AX,BX 的结果是 AX-BX-CF(进/借位标志)

举个粟子:

将 dx:ax 中存放的32位无符号数减去BX内的16位无符号数

sub ax,bx ; 结果的低16位,如果ax小于bx将产生借位,导致CF=1

sbb dx,0 ; 高16位-CF,若前一步出现借位,则据此调整高16位的内容


cmp指令:

cmp 是比较指令,cmp 的功能相当于减法指令,只是不保存结果。

cmp 指令执行后,将对标志寄存器产生影响。

其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。

cmp指令格式: cmp 操作对象1,操作对象2

功能:计算 操作对象1 - 操作对象2 ,但并不保存结果,仅仅根据计算结果对标志寄存器进行设置。

例如指令 cmp ax,ax , 做 (ax)-(ax) 的运算,结果为0,但并不在ax中保存,

仅影响flag的相关各位 。 指令执行后: zf=1 ,pf=1 ,sf=0 ,cf=0 ,of=0 。

比如:


mov ax,8
mov bx,3
cmp ax,bx

执行后: (ax)=8, zf=0 ,pf=1 ,sf=0 ,cf=0 ,of=0 。

通过cmp指令执行后,相关标志位的值就可以看出比较的结果。

cmp ax,bx

如果 (ax)=(bx) ,则 (ax)-(bx)=0 ,所以:zf=1 ;

如果 (ax)≠(bx) ,则 (ax)-(bx)≠0 ,所以:zf=0 ;

如果 (ax)<(bx) ,则 (ax)-(bx) 将产生借位,所以:cf=1 ;

如果 (ax)≥(bx) ,则 (ax)-(bx) 不必借位,所以:cf=0 ;

如果 (ax)>(bx) ,则 (ax)-(bx) 既不必借位,结果又不为0 ,所以:cf=0 并且 zf=0 ;

如果 (ax)≤(bx) ,则 (ax)-(bx) 既可能借位,结果可能为0 ,所以:cf=1 或 zf=1 ;

指令 cmp ax,bx 的逻辑含义是比较 ax 和 bx 中的值,如果执行后:

zf=1 ,说明 (ax)=(bx)

zf=0 ,说明 (ax)≠(bx)

cf=1 ,说明 (ax)<(bx)

cf=0 ,说明 (ax)≥(bx)

cf=0 并且 zf=0 , 说明 (ax)>(bx)

cf=1 或 zf=0 ,说明 (ax)≤(bx)

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

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

相关文章

带宽的理解-笔记

带宽的理解 带宽(频带宽度)&#xff1a;是指电磁波最高频率和最低频率的差值&#xff0c;这一段频率被称为带宽。 举例说明 人耳能听到的频率范围是20赫兹到2万赫兹。换句话说&#xff0c;人而只对20赫兹至2万赫兹的声音频率有反应&#xff0c;超出或低于这一频率范围的声音我…

B+树详解与实现

B树详解与实现 一、引言二、B树的定义三、B树的插入四、B树的删除五、B树的查找效率六、B树与B树的区别和联系 一、引言 B树是一种树数据结构&#xff0c;通常用于数据库和操作系统的文件系统中。它的特点是能够保持数据稳定有序&#xff0c;其插入与修改拥有较稳定的对数时间…

ngrinder项目-本地调试遇到的坑

前提-maven mirrors配置 <mirrors><!--阿里公有仓库--><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</ur…

借助Aspose.SVG图像控件,在线将 PNG 转换为 XML

Aspose.SVG for .NET 是用于SVG文件处理的灵活库&#xff0c;并且与其规范完全兼容。API可以轻松加载&#xff0c;保存和转换SVG文件&#xff0c;以及通过其文档对象模型&#xff08;DOM&#xff09;读取和遍历文件的元素。API独立于任何其他软件&#xff0c;使开发人员无需使用…

分布式与一致性协议之Raft算法(一)

Raft算法 概述 Raft算法属于Multi-Paxos算法&#xff0c;它在兰伯特Multi-Paxos思想的基础上做了一些简化和限制&#xff0c;比如日志必须是连续的&#xff0c;只支持领导者(Leader)、跟随者(Follwer)和候选人(Candidate)3种状态。在理解和算法实现上&#xff0c;Raft算法相对…

基于Springboot的大学生社团活动平台

基于SpringbootVue的大学生社团活动平台设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 社团信息 社团活动 社团论坛 社团资讯 后台登录 后台首页 学生管理 社…

医疗大模型华佗GPT-2:医学问答超越GPT-4,通过2023年国家执业药师考试

前言 随着人工智能技术的快速发展&#xff0c;特别是在自然语言处理(NLP)领域&#xff0c;大型预训练模型如GPT系列已经显示出在多个领域的强大应用潜力。最近&#xff0c;华佗GPT-2医疗大模型的发布&#xff0c;不仅标志着人工智能在医学领域的一大进步&#xff0c;更是在202…

Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发

一、写在开头 最近一直在更新《Java成长计划》这个专栏&#xff0c;主要是Java全流程学习的一个记录&#xff0c;目前已经更新到Java并发多线程部分&#xff0c;后续会继续更新&#xff1b;而今天准备开设一个全新的专栏 《EfficientFarm》。 EfficientFarm&#xff1a;高效农…

eaapp账号注销怎么操作 简单几步完成ea账号注销

eaapp账号注销怎么操作 简单几步完成ea账号注销 有许多玩家在注册ea平台账户的时候&#xff0c;会出现账号输错&#xff0c;地区选择错误等问题&#xff0c;导致自己没有注册成功心仪的账号&#xff0c;想要将账号注销却又不知道该如何操作&#xff0c;今天小编就为大家带来详…

mac idea 下载spring 源码遇到的问题

一、Kotlin: warnings found and -Werror specified 这个问题网上看了很多文章多说是缺少cglib、objenesis包。然后执行了 实际还是没有什么用 解决&#xff1a; 最后自己看了一下前面一个警告。说的就是版本太低。所以我觉得是这个前置问题导致的 然后搜索了改这个Kotlin版本…

springboot项目组合定时器schedule注解实现定时任务

springboot项目组合定时器schedule注解实现定时任务&#xff01; 创建好springboot项目后&#xff0c;需要在启动类上增加注解开启定时器任务 下图所示&#xff1a; 增加这个注解&#xff0c;启动项目&#xff0c; package com.example.scheduledemo.util;import org.springf…

C++-5

完成特殊成员函数 #include <iostream>using namespace std;class Person {string name;int *age; public://构造&#xff0c;析构&#xff0c;拷贝构造&#xff0c;拷贝赋值Person():age(new int ){}Person(int *age,string name):name(name),age(new int (*(age))){}~…

src下的jmh main test testFixtures的包具体作用

在Spring框架或者基于Spring的项目中&#xff0c;特别是使用Maven或Gradle作为构建工具时&#xff0c;src目录下通常会有几个标准的子目录&#xff0c;用于组织不同类型的源代码和资源文件。下面是对您提到的几个子目录的解释&#xff1a; src/main/ 这是项目的主要源代码目录。…

CSS 中的 Clamp 函数:掌握动态布局的秘籍

在前端开发领域&#xff0c;实现响应式设计的关键之一是能够灵活地控制元素尺寸&#xff0c;确保它们既不过小影响阅读&#xff0c;也不至于过大破坏布局和谐。CSS 的 clamp() 函数正是这样一位能手&#xff0c;它允许你为长度、宽度、字体大小等属性设定一个动态范围&#xff…

unity制作app(2)--主界面

1.先跳转过来&#xff0c;做一个空壳&#xff01;新增场景main为4号场景&#xff01; 2.登录成功跳转到四号场景&#xff01; 2.在main场景中新建canvas&#xff0c;不同的状态计划用不同的panel来设计&#xff01; 增加canvas和底图image 3.突然输不出来中文了&#xff0c;浪…

【C语言加油站】字符函数与字符串函数

字符函数与字符串函数 导言一、字符分类函数1.1 字符分类函数的用法 二、字符转换函数2.1 字符转换函数的用法 三、字符串函数3.1 成员3.2 strlen函数3.2.1 size_t类型3.2.2 strlen的易错点3.2.2 strlen的使用3.2.3 strlen与sizeof 3.3 strcpy函数和strncpy函数3.3.1 strcpy和s…

unity 专项一 localPosition与anchoredPosition(3D)的区别

一 、RectTransform 概念 1、RectTransform继承自Transform&#xff0c;用于描述矩形的坐标(Position)&#xff0c;尺寸(Size)&#xff0c;锚点(anchor)和中心点(pivot)等信息&#xff0c;每个2D布局下的元素都会自动生成该组件。 2、当我们在处理UI组件时&#xff0c;往往容易…

VTK 的可视化方法:Glyph

VTK 的可视化方法&#xff1a;Glyph VTK 的可视化方法&#xff1a;Glyph标量、向量、张量将多边形数据的采集点法向量标记成锥形符号参考 VTK 的可视化方法&#xff1a;Glyph 模型的法向量数据是向量数据&#xff0c;因此法向量不能像前面讲到的通过颜色映射来显示。但是可以通…

【计算机网络】网络层总结

目录 知识梗概 IP地址 子网划分 IP包头格式 路由 网络层协议 ARP病毒/ARP欺骗 知识梗概 IP地址 IP相关介绍&#xff1a;机器之间需要交流&#xff0c;必须要一个地址才能找到对应的主机&#xff0c;IP地址是主机的一种表示&#xff0c;保证主机之间的正常通信&#xff…

LabVIEW高效目标跟踪系统

LabVIEW高效目标跟踪系统 随着机器视觉技术的飞速发展&#xff0c;设计和实现高效的目标跟踪系统成为了众多领域关注的焦点。基于LabVIEW平台&#xff0c;结合NI Vision机器视觉库&#xff0c;开发了一种既高效又灵活的目标跟踪系统。通过面向对象编程方法和队列消息处理器程序…