CPU的标志寄存器

【汇编语言】标志寄存器(一) —— 标志寄存器中的标志位:ZF、PF、SF、CF、OF 一网打尽 本文主要介绍了8086CPU中flag寄存器中的一些标志位以及它们的功能。 阅读详情

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所表示的进位和溢出,是分别对无符号数和有符号数而言,他们没有一点关系。






virtuoso根据原理图绘制版图并联接_virtuoso画原理图 Virtuoso Schematic Editor 电路仿真一、Virtuoso Schematic Editor 实验目的:掌握电原理图(schematic)设计输入方法。 [1]启动 IC Design 软件 启动 软件: 开机后运行......2.绘制原理图 新建工程后打开的是默认的原理图文件 SCHEMATIC1 PAG...存盘 完成原理图的绘制后,将原理图存盘. 三 . 用 Check... 阅读详情

相关推荐

从‘裸纤’到成品:手把手拆解光纤阵列(FA)的装配、点胶与端面研磨全流程

本文详细拆解了光纤阵列(FA)从裸纤到成品的全流程,包括装配、点胶与端面研磨等关键工艺。通过实战经验和数据对比,揭示了5G基站、数据中心等场景中FA的精密制造要点与常见故障解决方案,为光通信器件生产提供专业指导。

weixin_42652674的博客 745

标志寄存器的详细解释

【第11章  标志寄存器】 参考教材:《汇编语言》(第二版,王爽 著,清华大学出版社) 学习要点:     标志寄存器中的CF、PF、ZF、SF、OF、DF标志位和一些与其相关的典型指令。 简介:     CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能不同)具有三种作用。     (1)用来存储相关指令的某些执行结果。

4780

实战教程:用YOLOv11+PyQt5打造工地安全帽检测系统(附完整数据集)

本文提供了一份完整的实战指南,详细介绍了如何利用YOLOv11目标检测模型与PyQt5界面库,从零开始构建一个智能工地安全帽检测桌面应用。内容涵盖高质量数据集的准备与标注、YOLOv11模型训练与调优,以及如何使用PyQt5开发流畅、专业的图形用户界面,最终实现一个可实际部署的AI安全监控系统。

plum99的博客 737

汇编语言(王爽版)学习笔记 第十一章 标志寄存器(1)

文章目录引言11.1 ZF标志11.2 PF标志11.3 SF标志检测点11.111.4 CF标志11.5 OF标志 引言 这种特殊的寄存器在8086CPU中,被称为标志寄存器。8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。 标志寄存器flag 11.1 ZF标志 flag的第6位是ZF,零标志位。它记录相关指令执行后,其结果是否为0。如果结果为0,那么zf=1;如果结果为1,那么zf=0。 比如指令: mov ax,1 sub ax,1 执行后,结果为0,

Kni9hT's Blog 1247

QGIS中高效处理CAD数据的两种实用技巧

本文详细解析了在QGIS中高效处理CAD数据的两种核心方法。针对DWG/DXF文件在QGIS中直接打开失败的问题,介绍了使用QGIS内置数据导入管理器进行标准化转换的流程,并重点推荐了功能更强大的Another DXF Importer插件,以更好地保留文字、块属性等复杂信息。文章对比了两种方法的优劣与适用场景,并提供了坐标系设置、中文乱码等常见问题的避坑指南,帮助用户根据数据需求选择最佳导入策略。

weixin_28363123的博客 117

Comsol 超声空化气泡仿真

当液体中受到高能量的超声波作用时,液体中的压力会发生剧烈变化,形成局部的低压区域。当液体中的压力降低到饱和蒸汽压以下时,就会发生空化现象,即液体中形成微小气泡。这种空化常用于一些工业应用,如清洗、乳化、混合等。这种空化常用于一些医学和生物学应用,如碎石术、肿瘤治疗、细胞破碎等。超声空化的应用非常广泛。在医学领域,超声空化广泛应用于诊断和治疗,如超声造影、超声刀、超声碎石术等。在工业领域,超声空化可用于清洗、乳化、混合等工艺。此外,超声空化还在食品加工、化学合成、环境保护等领域有着重要应用。

声学黑洞仿真工作室 2555

汇编语言-标志寄存器

汇编语言-标志寄存器 CPU内部的寄存器中,有一个特殊的寄存器,叫标志寄存器,它具有以下三种作用: 用来存储相关指令的某些执行结果 用来为CPU执行相关指令行为提供行为依据 用来控制CPU的相关工作方式 flag和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。 而flag寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,...

weixin_30267697的博客 335

手把手教你学SIMULINK模块库文件专栏--Scope 模块详解

模块是 Simulink 中的一个信号接收模块,用于实时显示信号波形。该模块可以捕捉并可视化仿真过程中信号的变化,帮助用户直观地分析系统的动态行为。模块都能提供强有力的支持。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常实用的工具,适用于需要实时显示信号波形的各种场景。模块的参数,可以进一步增强学习体验。模块参数的影响,下面我们将详细探讨每个参数如何影响波形显示。

MHD0815的博客 312

汇编语言学习第十一章-标志寄存器

本博文系列参考自>第三版,作者:王爽 8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。除了前面介绍的寄存器。本博文将介绍最后一个寄存器,标志寄存器。不同于之前的寄存器,标志寄存器是按位起作用的。其每一位都有特殊的含义。 8086标志寄存器的结构如下图所示: 标志寄存器的1,3,5,12,13,14,15都没有特殊含义。其0,2,4

vpoet 2248

计算数列位置N的值

本文介绍了一个数列生成问题,要求根据输入的两个整数M和N生成特定规则的数列,并输出第N个位置上的数值。数列生成规则为:前M个元素为1到M;后续元素根据前M个元素是否重复来决定计算方式(求和或求差)。文章提供了C++、Java和Python三种语言的实现方案,均包含输入处理、数列初始化、循环计算和结果输出等步骤。各语言实现中均使用集合去重特性判断重复元素,并通过内置函数或自定义方法求取最大值和最小值。该问题主要考察基础编程能力,包括数组/列表操作、最值计算和重复元素判断等基本编程技巧。

面试高手的博客 652

Gmsh+OCC对应版本库编译

输入 GMSH_DLL_EXPORT值C:\LIB\OCCT-7_8_0-i;9、如果只是生成库文件编译gmesh工程即可生成文件在C:\LIB\Gmsh\gmsh-4.13.1-Windows64-B\Debug 下gmsh.dll、gmsh.lib、gmsh.h、gmshc.h文件;3、CMAK编译Gmsh对应OCC版本的,CMAK选择源文件路径C:\LIB\Gmsh\gmsh-4.13.1-source,生成构建文件路径C:\LIB\Gmsh\gmsh-4.13.1-Windows64-B。

u013401364的博客 411

汇编语言(王爽)第十一章

第十一章 8086CPU的标志寄存器(简称flag)有16位,其中存储的信息称为程序状态字(PSW),其作用主要有3个 1、存储相关指令的某些存储结果 2、为CPU执行相关指令提供行为依据 3、控制CPU 的相关工作方式 其他寄存器存放数据时,是整个寄存器具有一个含义,而flag寄存器按位起作用,即每一位都有专门的含义,下图为8086CPU的flag寄存器结构 某些空白位不具有任何含义 11.1...

冲冲冲 1664

SQL中的时间计算:员工每日工作时长

摘要:本文介绍了一个使用SQL查询计算员工每日工作时长的实用方法。通过分析包含员工打卡记录的数据库表,利用CTE(公共表表达式)将日期分组,计算最早和最晚打卡时间差,最终以"小时:分钟"格式输出工作时长。该方法适用于每日两次打卡的场景,并提示了处理漏打卡等特殊情况时的注意事项,为企业考勤管理提供了有效的数据支持方案。(148字)

m0_74337424的博客 412

8086CPU标志寄存器的全称

在8086 CPU中,标志寄存器的全称是 "标志寄存器"(Flag Register),通常也称为 "状态寄存器"(Status Register)。

倪嘉 1132

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

x86架构CPU标志寄存器(FLAG寄存器)介绍

标志寄存器作用 x86架构CPU中,标志寄存器主要有3种作用: 存储相关指令执行后的结果,例如CF、PF、AF、ZF、OF标志位 执行相关指令时,提供行为依据,例如执行JE指令时会读取ZF的值,来决定是否进行跳转。 控制CPU的工作方式,例如IF、VM、TF等标志位。 16位模式下,标志寄存器名称为FLAG,寄存器大小16位。 32位模式下,标志寄存器的名称为EFLAG,寄存器大小32位。 64位模式下,为RFLAG,寄存器大小64位。 EFLAG寄存器各个位的用途如下,其中灰色的部分为保留位。 对于

APlus 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

关于CPU寄存器的那些事儿(4)——标志寄存器

标志寄存器——存储了很多标记位,标识了CPU执行指令过程中的一系列状态,这些标志基本上是由CPU自动设置和修改,我们只需要理解或记住就行了(硬件或cpu大神除外) CF 进位标志 PF 奇偶标志 ZF 零标志 SF 符号标志 OF 补码溢出标志 TF 跟踪标志 IF 中断标志 ······ 在x64架构下,原来的eflags寄存器升级为64位的rflags,不过,扩展出来的高32位目前还没有使用。 ...

哦,原来你也在这里。 1143

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

8086cpu中的标志寄存器与比较指令

在8086CPU中有一个特殊的寄存器——标志寄存器,该寄存器不同于其他寄存器,普通寄存器是用来存放数据的读取整个寄存器具有一定的含义,但是标志寄存器是每一位都有固定的含义,记录在运算中产生的信息,标志寄存器的机构如下图: 寄存器中的第1、3、5、 12、 13、 14 、15位在8086CPU中没有使用,其他位置代表不同的含义,各个位置的意思如下(该表截自百度知百科中的标志寄存器):

Masimaro的专栏 2166

CPU如何读取标志寄存器(Flags)并使用的全流程——大白话深度解析

标志寄存器(Flags)是 CPU 的“状态控制核心”,青春期的你写程序、搞硬件、面试就业都要懂它。如果能理解 CPU 如何自动刷新、读取、应用各种Flag流程,你对计算机控制流程理解就不止皮毛,是底层高手了。无论你是学原理,还是写汇编、搞算法、优化性能、提升代码安全——真正懂 Flags 的读用流程,能帮助你用最精准的判断做好分支跳转、异常处理、现场保护、线程切换,成为高手里的高手。别小看这组“CPU的小开关”——它就是整个计算机智能判断的灵魂!

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1009

五、CPU详解、寄存器详解、标志寄存器详解

控制器、运算器、寄存器组成CPU   控制器:领导 运算器:员工,计算数据 寄存器:寄存数据信息,在内存与运算器之间 硬盘运算速度<内存运算速度<寄存器运算速度 寄存器:(寄存器16位[寄存器高8与低8],内存8位)   1. 通用寄存器(16位):AX、BX(基址寄存器)、CX、DX 例如:往寄存器BX放入16进制数AF1E(16位二进制) 入:r bx 出:b...

墨痕诉清风的博客 3670

CPU标志寄存器

这个标志寄存器似乎很重要,不干掉它,中断这玩意还进行不下去了,但是过于复杂,都是一些跟计算结果相关的位,头痛

xhoo 的博客 2778

汇编:CPU结构 - FLAG标志寄存器和相关指令

FLAG是计算机的专业术语,状态标志寄存器。1、用来存储相关指令的某些数据结果。 2、用来为CPU执行相关的指令提供行为依据。 3、用来控制CPU的相关工作方式。标志寄存器是按位起作用,每一位都有专门的含义。 上图中有字符标记的都具有特殊含义,其他位没有使用(造成影响的大多数是运算指令(逻辑/算数))。进行标志位学习和验证前,先看一下如何在debug里看标志位。...............

chenzimin_blog 4606

8086CPU中的标志寄存器

8086CPU中的标志寄存器(FLAG寄存器)是一个16位的寄存器,用于存储程序执行过程中的状态信息。CF (进位标志):用于表示无符号算术运算中的进位或借位情况。如果运算结果产生了进位或借位,CF被设置为1,否则为0。PF (奇偶标志):用于表示运算结果中1的个数的奇偶性。如果结果中1的个数为偶数,PF被设置为1,否则为0。如果运算结果溢出,OF被设置为1,否则为0。如果DF被设置为1,字符串操作是递减的,否则是递增的。如果结果为负数,SF被设置为1,否则为0。如果结果为零,ZF被设置为1,否则为0。

Maker88888的博客 1396

CPU 标志寄存器

只是简单的说明了下标志寄存器的各个标志位,有点简陋,以后会尽量的再完善(前提看到好的东西的时候)标志寄存器是16位特殊寄存器(flag)其0.2.4.6.7.8.9.10.11分别为CF.PF.AF.ZF.SF.TF.IF.DF.OF,空位没对CPU没有意义一.  ZF标志 在第6位,叫零位标志位,如果CPU运算后,结果为0,则ZF=1,结果不为0,则ZF=0如:mov ax,2   sub

Jack码•农的专栏 1359

标志寄存器df_8086CPU的寄存器

为了提高CPU的运算速度,减少访问存储器的存取操作,8086CPU内置了相应寄存器,用来暂存参加运算的操作数及运算的中间结果。指令通过寄存器实现对操作数的操作比通过存储器操作要快得多,因此在编程时,合理利用寄存器能提高程序的运行效率。8086CPU内部提供了14个16位的寄存器。其结构如下:通用寄存器通用寄存器分为数据通用寄存器和地址指针与变址寄存器两组。数据通用寄存器数据通用寄存器包括...

weixin_39745933的博客 810
上一篇: ret和call的原理
下一篇: cmp指令
OS技术解密
博客等级 码龄16年 3760粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值