为什么 CMP(比较)有时会在 8086 汇编中设置进位标志?

2023-11-24

我一直在阅读 8086 指令集,它说 CMP(比较)可以设置进位标志。我知道比较会减去两个操作数,但我想知道在这种情况下是否有人可以提供一个示例。

我只是无法理解添加数字和负数将设置进位标志的想法。我已经阅读了借用标志,但我只需要一个示例来阐明我对比较指令的理解。

另外,我知道如果 3 - 5 = -2 会设置负标志...什么时候设置进位?


  • 在导致下溢或溢出的操作之后设置进位标志。例如,从 6 减去 10 将导致下溢并设置进位标志。同样,寄存器的最大值加1将导致溢出并设置进位标志。
  • 进位标志也在移位操作期间被修改,它被设置 到从目标寄存器移出的最后一位的值。
  • 位测试会将测试位的值放入进位 旗帜。执行此操作的操作码:BT、BTC、BTR 和 BTS。
  • 直接影响进位标志的指令:CLC、CMC 和 STC。
  • 在比较期间,进位标志被设置,就像两个 操作数已被减去。
  • 在求反 (NEG) 期间,进位标志被设置,除非操作数是 零,在这种情况下它被清除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 CMP(比较)有时会在 8086 汇编中设置进位标志? 的相关文章

  • 为什么不能执行 mov [eax], [ebx] [重复]

    这个问题在这里已经有答案了 我可以做这个 mov eax ebx 和这个 mov eax ebx 甚至这个 mov eax ebx 但不是这个 错误C2415 mov eax ebx 只是wtf 为什么 它与 ptr1 ptr2 相同 为什
  • NASM 轮班操作员

    您将如何在寄存器上进行 NASM 中的位移位 我读了手册 它似乎只提到了这些操作员 gt gt lt lt 当我尝试使用它们时 NASM 抱怨移位运算符处理标量值 您能解释什么是标量值并举例说明如何使用 gt gt and lt lt 另外
  • Visual Studio 2017 上的简单装配程序

    386 model flat c stack 100h printf PROTO arg1 Ptr Byte data msg1 byte Hello World 0Ah 0 code main proc INVOKE printf ADD
  • MySQL 中两个 Select 查询的结果相减

    我编写了两个 mysql 查询 一个获取一年中特定月份的总用户 注册 另一个获取一年中特定月份的活跃用户 我需要找到数量inactive当年的用户 为此 我正在考虑减去通过两个单独的查询获得的总用户数和活动用户列 以下是查询 1 Fetch
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • 为什么我的空循环在 Intel Skylake CPU 上作为函数调用时运行速度是原来的两倍?

    我正在运行一些测试来比较 C 和 Java 并遇到了一些有趣的事情 在 main 调用的函数中 而不是在 main 本身中 运行具有优化级别 1 O1 的完全相同的基准代码 导致性能大约翻倍 我正在打印 test t 的大小 以毫无疑问地验
  • 大会,你好世界问题

    我正在 Linux 上学习 asm noobuntu 10 04 我得到了以下代码 http asm sourceforge net intro hello html http asm sourceforge net intro hello
  • 使用 MIPS 从 Big Endian 到 Little Endian 无需逻辑运算?

    我正在使用 MIPS QtSpim 将 32 位字从 Big Endian 转换为 Little Endian 我下面显示的内容已检查且正确 不过我想知道还有什么其他方法可以让我进行转换 我虽然只使用了旋转和移位 但如果没有逻辑运算 我就无
  • 阴影空间示例

    EDIT 我接受了下面的答案 并添加了我自己的代码的最终修订版 希望它向人们展示影子空间分配的实际示例 而不是更多的文字 编辑 2 我还设法在 YouTube 视频 所有内容 的注释中找到了一个调用约定 PDF 的链接 其中有一些关于 Li
  • MikeOS 引导加载程序中的堆栈段

    我不明白这段代码 mov ax 07C0h Set up 4K of stack space above buffer add ax 544 8k buffer 512 paragraphs 32 paragraphs loader cli
  • 设置 IRQ 映射

    我正在遵循一些教程和参考文献来尝试设置我的内核 我在教程中遇到了一些不熟悉的代码 但根本没有解释它 这是我被告知映射的代码16 IRQs 0 15 到 ISR 地点32 47 void irq remap void outportb 0x2
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • X86 预取优化:“计算 goto”线程代码

    我有一个相当重要的问题 我的计算图有循环和多个 计算路径 我没有制作一个调度程序循环 其中每个顶点将被一一调用 而是将所有预先分配的 框架对象 放置在堆中 代码 数据 这有点类似于线程代码 甚至更好 CPS 只是在堆中跳转 执行代码 每个代
  • 这种没有推送寄存器的交换有多安全?

    我对汇编非常陌生 下面的代码应该通过两个不同的函数交换两个整数 首先使用swap c然后使用swap asm 但我怀疑 我是否需要push 我的意思是保存 汇编代码之前寄存器的每个值和pop稍后 就在返回之前 main 换句话说 如果我返回
  • 为什么我的代码显示垃圾?

    当我也想打印列表中的每个数字时 我的代码显示垃圾 有什么问题吗 输出应如下所示 给定的数组是 2G 4 PT为什么这是垃圾总数是 7 Code ASSUME CS CODE DS DATA SS STK ORG 0000H DATA SEG
  • NASM 中的 equ 和 db 有什么区别?

    len equ 2 len db 2 它们是否相同 产生可以用来代替的标签2 如果不是 那么每种申报表的优点或缺点是什么 它们可以互换使用吗 第一个是equate 与 C 类似 define len 2 因为它实际上并没有在最终代码中分配任
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • Grub 和进入实模式(低级汇编语言编程)

    我一直在开发一个玩具操作系统 并一直使用 grub 作为我的引导加载程序 最近尝试使用 VGA 时 我发现无法使用硬件中断 我发现这是因为我被 grub 置于保护模式 有人知道如何在不删除 grub 的情况下回到实模式吗 如果您使用 GRU
  • 无法识别的仿真模式:MinGW32 上的 elf_i386

    我正在尝试制作内核 但无法链接C与程序集一起输出 这ld 我收到错误 无法识别的仿真模式 elf i386 我正在使用 Windows 10 专业版以及 MinGW32 和 MSYS 我正在使用的代码 link ld link ld OUT
  • 使用 Gas 生成与位置无关的代码 (-fPIC)

    我尝试在 x86 64 上创建共享库但失败 问题归结为以下代码 请不要介意 它没有多大意义 section data newline ascii n section text globl write newline type write n

随机推荐

  • 如何选择sql中除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 可能的重复 SQL 使用 SELECT except columnA FROM tableA 排除列 是否可以选择除一列之外的所有列 这是所有列名称 id name address age SELECT id n
  • Android - 如果没有互联网连接则显示一条消息并继续检查

    我已经为此工作了几天了 我刚刚开始使用 Android 我有一个由两部分组成的问题 我想检查互联网是否可用 如果启动 webView 则不发出警报并阻止 webView 加载 我已经尝试过此操作 但如果没有互联网连接 例如飞行模式 它会强制
  • 如何判断秋千上的窗户是否打开

    我的应用程序有一个问题 用户一次会打开多个窗口 我添加了 dispose 方法来调用关闭窗口 现在我应该始终保持至少一个窗口打开 以便应用程序在没有完全关闭的情况下不会隐藏 如果你不明白 请阅读以下场景 我同时打开了窗口 A 和窗口 B 现
  • 使用 FileZilla 上传到 SFTP 服务器时收到描述为“失败”的失败

    我多次遇到这个问题 从 FileZilla 上传或编辑任何文件时 它显示错误消息 错误 写入时出错 收到描述为 失败 的失败 上传文件后 文件大小将为 0 字节 我的服务器是 AWS EC2 具有最小实例类类型 The 失败 是错误代码 4
  • std::unordered_set 是否连续(如 std::vector)?

    我将指针存储在 std unordered set 中 我这样做是因为我不想要任何重复项 我删除集合中的指针 因此如果存在重复项 我将尝试删除已删除的指针 我大量循环遍历这些集合 并且因为我知道 std vector 是最快的循环容器 连续
  • 不同命名空间中模板的特化

    我正在使用 C 开发一个跨平台库 MSVC 编译得很好 但 g 给我带来了问题 假设我有以下 Enum 辅助类 File Enum h ifndef ENUM H define ENUM H include
  • javascript正则表达式匹配特定域名

    我一直在尝试制作一个正则表达式来将 URL 与特定域名相匹配 所以如果我想检查这个网址是否来自 example com 什么 reg exp 应该是最好的 此 reg exp 应匹配以下类型的 URL http api example co
  • 如何在新标签页上打开谷歌广告?

    每当访问者点击网站上的 Google 广告时 该广告就会在同一页面中打开 从而取代我的网站 我就会失去该访问者 我们是否可以采取一些措施 以便每当网站访问者点击 Google 广告时 它就会在新标签中打开 有什么脚本需要修改吗 我尝试了一个
  • MongoDB:具有稀疏值的唯一稀疏复合索引

    我正在尝试存储以下链接 URL hostname i imgur com webid qkELz jpg 我想要在这两个字段上有一个唯一且稀疏的复合索引 因为 的组合hostname and webid应该是独一无二的 webid总是会被查
  • ggplot2:geom_ribbon,alpha 取决于每个 x 沿 y 轴的数据密度

    ggplot2 中有没有一种方法可以根据点的密度生成具有不同 alpha 的 geom ribbon 或其他基于区域的 geom 以下代码生成 50 个有噪声的正弦波 每个样本具有随机 x 值 我不想绘制每一个点 因为我可能需要一千次或更多
  • 获取单个 Windows 应用程序当前音量输出级别,如音频混合器中所示

    我正在尝试编写一个 C 代码 该代码从每个访问声音输出的 Windows 应用程序输出当前的音频输出级别 如音量混合器不断变化的绿色条所示 该程序将每 10 毫秒检查一次 并输出如下内容 Windows Media Player 30 Mo
  • 比较 PHP 中的多维数组

    如何在 php 中比较多维数组 有简单的方法吗 我知道的最简单的方法 a b 请注意 您还可以使用 它们之间的区别是 With 双等于 顺序很重要 a array 0 gt a 1 gt b b array 1 gt b 0 gt a va
  • c recv() 读取直到出现换行符

    我正在用 C 语言编写 IRC 机器人 但遇到了障碍 在我的主函数中 我创建了套接字并连接 所有这些快乐的事情 然后我有一个 几乎 无限循环来读取从服务器发回的内容 然后我将读取的内容传递给辅助函数 processLine char lin
  • 在 jekyll 博客中支持标签的简单方法

    我正在使用标准 jekyll 安装来维护博客 一切都很顺利 但我真的很想标记我的帖子 I can使用 YAML Front Matter 标记帖子 但如何为每个标签生成可以列出该标签的所有帖子的页面 这是一个解决方案在单个页面上按字母顺序排
  • TableLayoutPanel 的行/列着色(vs2008、winform)

    我可以为 TableLayoutPanel 中的整个行或列添加特定颜色吗 如何 请提供示例代码 如果有 提前致谢 是的你可以 使用 TableLayoutPanel 的 CellPaint 事件来测试哪一行 列调用了该事件 然后使用矩形的
  • 使用 tf.trainable_variables() 显示可训练变量的名称

    我正在处理weights in a RNNCell 我有以下代码 var names for var in tf trainable variables var names append var name 在另一个名为model py 我正
  • 正则表达式验证密码强度

    我的密码强度标准如下 8个字符长度 2 个大写字母 1 个特殊字符 2 个数字 0 9 3 个小写字母 有人可以给我同样的正则表达式吗 密码必须满足所有条件 您可以使用积极的前瞻断言来执行这些检查 A Z A Z 0 9 0 9 a z a
  • 我如何在discord.py中创建一个有效的斜杠命令

    我正在尝试使用 discord py 创建斜杠命令 我已经尝试了很多东西 但它似乎不起作用 如有帮助 将不胜感激 注意 我将在最后包含 pycord 的版本 因为我认为它更简单 也是最初的答案 不和谐 py版本 首先确保您安装了最新版本的d
  • Algolia 搜索网络错误

    我正在将 Algolia 与我拥有的 Firebase 项目连接起来 我使用 Firebase Cloud Functions 来使 Algolia 索引与 Firebase 数据库中发生的所有更改保持同步 但每当我打电话 索引 saveO
  • 为什么 CMP(比较)有时会在 8086 汇编中设置进位标志?

    我一直在阅读 8086 指令集 它说 CMP 比较 可以设置进位标志 我知道比较会减去两个操作数 但我想知道在这种情况下是否有人可以提供一个示例 我只是无法理解添加数字和负数将设置进位标志的想法 我已经阅读了借用标志 但我只需要一个示例来阐