CPU的标志寄存器

2023-10-30

1.ZF

零标志位,执行指令后结果为0,ZF=1,否则ZF=0


2.PF

奇偶标识位,它记录相关指令执行后,其结果的所有二进制位中1的个数是否为偶数,如果是偶数,PF=1,否则PF=1。


3.SF

符号标识位,它记录相关指令执行后,其结果是否为负,如果是负数SF=1,否则,SF=0

SF是CPU对有符号数进行运算结果的一种记录,它记录数据的正负。在我们将数据当做有符号数来运算的时候,可以通过它得知结果的正负。如果我们将数据当做无符号数运算,SF的值则没有意思,虽然相关的指令影响了它的值。也就说,CPU执行add等指令事,是必然要影响到SF的,至于我们需不需要这种影响,那就看我们如何看待指令所进行的运算了。比如:

mov al,10000001B

add al,1

执行后,结果为10000010B,SF=1,表示:如果指令进行有符号数运算,那么结果为负;

mov al,10000001B

add al,01111111B

执行后,结果为0,SF=0,表示:如果指令进行的是有符号书运算,那么结果非负。


4.CF

进位标志位。一般情况下,在进行无符号数运算的时候,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。

比如两个8位数据,98H+98H,将产生进位。由于这个进位值在8位数中无法保存,我们在前面的课程中,就只简单地说这个进位丢失了。其实CPU在运算的时候,并不丢弃这个进位值,而是记录在一个特殊的寄存器的某一位上。8086CPU就用了CF位来记录进位值。

mov al,98H

add al,al ;执行后(al)=30H,CF=1

add al,al ;执行后(al)=60H,CF=0


5.OF标志

在进行有符号运算时,结果超过机器所能表示的范围将溢出。OF=1,溢出,否则无溢出。


总结一下CF和OF的区别:

CF是对无符号数运算有意义的标志位,而OF是对有符号数运算有意义的标志位,比如:

mov al,98

add al,99

add指令执行后,CF=0,OF=1。CPU在执行add等指令时,包含两种意义:无符号运算和有符号运算。对于无符号运算,CPU用CF记录是否进位;对于有符号运算,CPU用OF记录是否溢出,当然,还要用SF记录结果的符号。对于无符号运算,98+99没有进位,CF=0;对于有符号运算98+99发生溢出,OF=1。

mov al,0F0H

add al,088H

add指令执行后,CF=,OF=1。对于无符号数运算,0F0H+88H有进位,CF=1;对于有符号位运算,0F0H+88H发生溢出,OF=1。


我们可以看出,CF和OF所表示的进位和溢出,是分别对无符号数和有符号数而言,他们没有一点关系。






本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CPU的标志寄存器 的相关文章

  • 汇编语言(十)——条件判断指令

    首先了解按位指令 xff0c 这里使用的技术也可以用于操作硬件设备控制位 xff0c 实现通信协议以及加密数据 xff0c 操作说明AND源操作数和目的操作数进行逻辑与操作OR源操作数和目的操作数进行逻辑或操作XOR源操作数和目的操作数进行
  • 蜂鸣器(汇编语言)

    蜂鸣器的发声主要需要搞懂两点问题 xff0c 第一 xff0c 如何使用单片机控制蜂鸣器发声 xff1b 第二 xff0c 选择合适的延时时间 如何使用单片机控制蜂鸣器的发声 xff1f 蜂鸣器分为有源和无源 xff0c 本实验采用无源蜂鸣
  • 汇编语言

    基础知识 1 1机器语言 计算机的机器指令是一列二进制数字 计算机将之为转变为一列高低电平 xff0c 以使计算机的电子器件受到驱动 xff0c 进行运算 1 2 汇编语言的产生 程序员 汇编指令 编译器 机器码 计算机 1 3 汇编语言的
  • 汇编语言----mul指令

    mul指令 把操作数与AX相乘 最后存放在AX中 例子 mov ax 4 mov bx 5 mul bx ax 20
  • LLVM汇编语言指导手册之指令手册

    下面是我对llvm汇编中一些不常用的指令的总结 shl 指令 语法
  • 汇编:按给定格式在屏幕中间显示字符串

    代码如下 assume cs code ds data ss stac data segment db welcome to masm db 02h 24h 71h data ends stac segment dw 0 0 0 0 0 0
  • 汇编语言数据处理长度(X ptr指令解析)

    文章目录 1 通过寄存器名指明要处理的数据的尺寸 2 在没有寄存器名存在的情况下 用操作符 X ptr 指明内存单元的长度 X在汇编指令中可以为byte word或dword 3 其他方法 8086CPU的指令 可以处理两种尺寸的数据 by
  • CPU的标志寄存器

    1 ZF 零标志位 执行指令后结果为0 ZF 1 否则ZF 0 2 PF 奇偶标识位 它记录相关指令执行后 其结果的所有二进制位中1的个数是否为偶数 如果是偶数 PF 1 否则PF 1 3 SF 符号标识位 它记录相关指令执行后 其结果是否
  • 对int、iret和栈的深入理解

    我们以一个程序来展开讨论 用7ch中断例程完成loop指令的功能 在屏幕中间显示80个 1 程序框架如下 assume cs code code segment start mov ax 0b800h 向8086CPU显存的地址 mov d
  • MIPS汇编语言实现选择排序算法

    MIPS汇编语言实现选择排序算法 1 流程图 2 C代码 3 MIPS代码 附注释 MIPS汇编语言实现选择排序算法 1 流程图 2 C代码 include
  • 汇编中16进制装换成为其他进制(2,8,10)

    16进制装换成为其他进制关键在于得到键盘输入 并将它保存在BINARY的这个变量里面 宏定义直接调用 例子中有 DISP etc 子程序的话要注意对主程序的信息的保护和恢复 我在这里使用的是在子程序里面去保护主程序的方式 你也可以在主程序调
  • VC6++配置汇编环境和第一个简单程序

    准备工作 1 下载并安装VC6 软件 2 下载Irvine32 lib库以及相关文件 Intel 汇编语言程序设计 irvine lib文件内 3 下载ml exe和ml err文件 ml from masm32文件内 以上准备工作的文件均
  • win32汇编语言实现冒泡排序

    1 背景 现在大多数的大规模程序并不是由汇编语言来编写 原因很简单 因为太耗时了 但是汇编语言仍然被广泛运用在配置硬件设备以及优化程序的执行速度和尺寸大小等方面 特别是在逆向工程方面 更需要深入理解与熟练掌握汇编语言 针对现阶段 看汇编基本
  • arm push/pop/b/bl汇编指令

    目录 1 push指令 2 pop指令 3 b指令 4 bl指令 5 bx指令 1 push指令 功能描述 入栈 armv7 芯片手册 Push Multiple Registers stores multiple registers to
  • 【汇编程序】试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”

    STACKS SEGMENT STACK DW 100H DUP TOP LABEL WORD STACKS ENDS DATAS SEGMENT STRING1 DB abcd123 STRING2 DB abcd133 定义两个不同的字
  • 汇编实验(循环程序设计)(排序以及找非负数)

    这里的排序 用的是冒泡排序 首先 先是说一下找非负数的想法 负数 TEST 80H 之后不为0 我们可以用这个性质来做 1 FIND POSITIVE NUMBER LEA SI FIRST LEA DI SECOND MOV CX N L
  • C++反汇编 利用反汇编分析常见C/C++语句的底层实现(硬核)

    文章目录 赋值操作 if条件判断 指针和引用的实质 跳转函数 两个数字的交换操作 数组的赋值及 858993460数字的由来 总结 本节我们利用反汇编技术来对我们最常见的C语言语句进行解析 C 反汇编技术可以让你更好的理解C C语言的底层含
  • x86 32位机的特权保护

    优先级划分 指令的权限检查和超出权限访问的异常处理等是构成特权保护的基础 本文将试图讲解为大家解决两大问题 win32汇编中为什么找不到中断指令的应用 比如int 7ch windows错误的 蓝屏 是从哪里来的 保护模式下 中断或异常往往
  • 汇编语言(第三版)读书笔记 2 - 第2章 寄存器

    第2章 寄存器 前一章所说的总线 相对于CPU内部来说是外部总线 内部总线实现了CPU内部各个器件 运算器 控制器 寄存器 之间的联系 外部总线实现了CPU和主板上其他器件的联系 不同的CPU 寄存器的个数 结构是不相同的 8086 CPU
  • DOSBOX 快捷键及 MS-DOS 命令

    1 全屏 退出全屏 alt enter 2 释放鼠标 ctrl F10 3 exit 退出DOSBOX 4 dir 显示目录内容 可选参数 w 只显示文件名 P 显示部分内容 exe 筛选出可执行文件 5 cd 进入目录 cd 退回上一级目

随机推荐

  • Scoop安装使用及卸载

    1 卸载 scoop uninstall scoop scoop uninstall scoop 2 安装 打开 PowerShell 设置用户安装路径 env SCOOP D scoop Environment SetEnvironmen
  • 数据结构-使用邻接矩阵创建无向图

    1 邻接矩阵 邻接矩阵 Adjacency Matrix 是表示顶点之间相邻关系的矩阵 2 程序分析 W i j表示边上的权值 表示计算机允许的 大于所有边权值的数 用邻接矩阵表示法表示图 除了用一个存储邻接矩阵的二维数组外 还需要用一个一
  • 饥荒计算机丢失xinput1 3.dll,《德军总部:旧血脉》Win8运行提示丢失XINPUT1_3.dll解决方法...

    混迹在一群瞎JB回答的人中间 努力传播正确的电脑常识 对于一些非常简单的问题的正确解决办法的我 每次看到楼上这样的回答 以及不论看到提问者说丢失的是什么dll都一概让对方去下载一个放到system32 有些自作聪明的还会说如果是64位系统就
  • [23] Instruct 3D-to-3D: Text Instruction Guided 3D-to-3D conversion

    本文提出一种3D to 3D转换方法 Instruct 3D to 3D 借助预训练的Image to Image扩散模型 本文方法可以使各个视角图片的似然最大 本文方法显式地将source 3D场景作为condition 可以有效提升3D
  • XPath

    Date 2019 07 03 Author Sun XPath简介 XPath XML Path Language 是一门在 XML 文档中查找信息的语言 可用来在 XML 文档中对元素和属性进行遍历 1 辅助工具 Chrome插件 XP
  • 计算机应用物联网应用技术论文,计算机应用技术论文:物联网垃圾回收站设计与实现...

    摘 要 随着无线网络技术的发展 实现垃圾回收站智能检测与监控成为可能 并通过对垃圾回收站中产生的有毒有害气体甲醛 硫化氢 二氧化硫 氨气等检测 来减少对环境及人体健康带来的危害 GPS定位与GSM通信功能也可提高垃圾清理 监控效率 讨论无线
  • android h5 session,【安卓】移动端app如何保存后台session认证用户?使用jwt?还是什么?...

    最近项目使用android访问后台 但是每次 获取session都会失效 所以问下有做过类似项目的同仁 请问下你们是怎么实现的 是通过jwt还是redis来保存session的 回答 我后来使用的是springsecurity jwt认证方
  • 关于easyui弹出两次onChange解决方案和其他的应用例子

    lt DOCTYPE html gt
  • C和C++混合编程

    C和C 混合编程 在很多情况下 C系统中会用到C 的代码 而C 中也会用到C代码 所以在Linux系统下充斥中 h c cpp后缀的代码文件 这样就引入了一个问题 如何让这些代码很好的在一起编译链接 在这几天项目中确实也遇到了相似的问题 把
  • Java之package语句和import语句

    Java之package语句和import语句
  • 机器学习人工智能中的Rubyyy或nay

    Ror是机器学习的最佳选择吗 IS ROR THE BEST CHOICE FOR MACHINE LEARNING Currently we see many web developers and tech enthusiasts tal
  • EXT.JS2.2ajax请求

    ext2 x ext3 x 不支持ajax的同步请求 ext4就开始支持 Ext Ajax request url adapterInfo do invoke queryAdapterDatabases method post params
  • 对于Java封装、继承、多态的新理解

    封装 封装包括两个字 封和装 先是装 后才封 在面向过程语言中 一般数据都是相互独立 例如姓名 年龄 性别这些数据 虽然它们都是在描述一个人 但是它们数据是离散的 这样就不便于数据的传递 例如方法需要的参数为姓名 年龄 性别等一系列参数 那
  • 1.3扩展演练---认识错误(BUG)

    1 3扩展演练 认识错误 BUG 第一个演练中常见的错误 1 gt 手误 例如使用pint hello world NameError name pint is not defined 名称错误 pint 名字没有定义 2 gt 将多条pr
  • java中super的三种用法

    java中super的用法 super只在子类中出现 super有三种用法 1 super xxx xxx可以是类的属性 例如super name 即从子类中获取父类name属性的值 2 super xxx xxx 可以是类中的方法名 su
  • el-select实现懒加载

    先看一个线上的演示示例 https code juejin cn pen 7273352811440504889 背景 我们在实际开发中经常遇到这样的需求 el select实现懒加载 用通俗的话说 为了增加响应速度 就是初始下拉只展示50
  • 「区块链+数字身份」:DID 身份认证的新战场

    美国经济学家布莱恩 阿瑟在其著作 技术的本质 中 写过这么一句话 技术总是进行着这样一种循环 为解决老问题去采用新技术 新技术又引发新问题 新问题的解决又要诉诸更新的技术 区块链技术之所以能流行 部分原因是它能解决互联网时代遗留下的问题 比
  • 手把手教你配置JAVA环境变量、安装IDEA,简单易懂,学会你给我点赞,学不会我给你点赞

    前言 保姆级教程 让你易如睡觉 学不会来叨我 我飞去给你配 如果车票报销的话 手把手教程 别人配置java的痛苦你体会不到 让你边配边笑 新手学java 看完这个就能开写啦 配置java环境 配置java环境就是安装jdk和配置环境变量 安
  • 动态库的链接和链接选项-L,-rpath-link,-rpath【转】

    转自 https my oschina net shelllife blog 115958 链接动态库 如何程序在连接时使用了共享库 就必须在运行的时候能够找到共享库的位置 linux的可执行程序在执行的时候默认是先搜索 lib和 usr
  • CPU的标志寄存器

    1 ZF 零标志位 执行指令后结果为0 ZF 1 否则ZF 0 2 PF 奇偶标识位 它记录相关指令执行后 其结果的所有二进制位中1的个数是否为偶数 如果是偶数 PF 1 否则PF 1 3 SF 符号标识位 它记录相关指令执行后 其结果是否