软件逆向之标志位

进位标志CF(Carry Flag)

  • 介绍:如果运算结果的最高位产生了一个进位(加法)或借位(减法),那么,其值为1,否则其值为0。无符号数。

  • 示例:

    mov al,0xFF
    add al,0x2
    

奇偶标志PF(Parity Flag)

  • 介绍:奇偶标志PF用于反映运算结果中(最低有效字节中)1的个数的奇偶情况。偶数个"1"时,PF为1,否则为0

  • 示例:

    mov al,0x3
    add al,0x3 //6  0110  2个"1"  偶数
    add al,0x2 //8  1000  1个"1"  奇数
    
    • 偶数示例:


    • 奇数示例:


辅助进位标志AF(Auxiliary Carry Flag)

  • 介绍:当发生下列情况时, 辅助进位标志AF的值被置为1,否则其值为0

    1. 在字(word、dword等)操作时,发生低字节向高字节进位或借位时;
    2. 在字节操作时,发生低4位向高4位进位(加法)或借位(减法)时。
  • 示例:

    mov eax,0x55EEFFFF
    add eax,2mov ax,0x5EFE
    add ax,2mov al,0x5E
    add al,2mov ah,0x5E
    add ah,2
    

零标志ZF(Zero Flag)

  • 介绍:零标志ZF用来反映运算结果是否为0。如果运算结果为0, 则其值为1, 否则其值为0。在判断运算结果是否为0时,可使用此标志位。

  • 示例:

    xor eax,eaxmov eax,2
    sub eax,2
    

符号标志SF(Sign Flag)

  • 介绍:符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在二进制数中,最高位指的是最左侧的位。最高位也称为符号位,在有符号数中,它用来表示数字的正负(0表示正,1表示负)。符号标志位,记录相关指令执行后,其结果是否为负,如果结果为负,则sf = 1,如果结果为非负,则sf = 0。

  • 示例:

    mov al,0x7F
    add al,0x2 // 81    1000 0001  最高位为1->负数   SF = 1
    

溢出标志位OF(Overflow Flag)

  • 介绍:溢出标志OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则被清为0。

    1. 无符号数:0……FF
    2. 有符号数: 正数:0……7F 负数:80……FF
  • 示例:

    无符号溢出、有符号不溢出 //8位无符号整数范围:0~255  超出范围从0开始
    mov al,0xff
    add al,0x2 //1   257    0001 0000 0001无符号不溢出、有符号溢出  //8位有符号整数范围:-128 ~ 127 
    mov al,0x7f
    add al,0x2 //81   129 > 127    1000 0001无符号、有符号都溢出
    mov al,fe
    add al,0x80 
    //无符号溢出原因:当al的值为254,再加128理论上应该是382,超出了无符号整数范围,发生了溢出
    //有符号溢出原因:al是8位寄存器,只能存储-128 ~ 127,0x80为128,超出了最大范围,发生了溢出
    

补充

补码运算:正数为原码本身,负数为原码取反加一
127为正数,其补码为原码0111 1111
-127为负数,其补码为原码0111 1111,取反1000 0000,加一,1000 0001。

0xFFFF :
要想转换为十进制,可以先转换为二进制,即1111 1111 1111 1111
最高位为符号位,1代表负数
你的问题相当于求其真值,公式为除过符号位其他位取反加一,即
1111 1111 1111 1111 ->1000 0000 0000 0000 ->1000 0000 0000 0001他就是十进制-1

最高位进位与溢出的区别:

进位标志CF表示无符号数运算结果是否超出范围。
溢出标志OF表示有符号数运算结果是否超出范围。
溢出主要是给有符号运算使用的,在有符号的运算中,有如下的规律:

正 + 正 = 正,如果结果是负数,则说明有溢出。
负 + 负 = 负,如果结果是正数,则说明有溢出。
正 + 负,永远都不会有溢出

总结

  • CF针对无符号数(将寄存器中的操作数都看作是无符号数)
  • OF针对有符号数(将寄存器中的操作数都看作是有符号数)
  • 有符号无符号指的是最高位是否是符号位,即是以补码的形式看待还是以原码的形式看待。


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

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

相关文章

【mybatis-plus问题集锦系列】mybatis使用xml配置文件实现数据的基础增删改查

简单的数据查询,我们可以在mapper接口里面去实现,但是如果是复杂的查询,我们就可以使用xml配置文件去做, 官网链接xml配置文件 实现效果 实现代码 根据mapper接口的包结构,在resources包里面新建同名同结构的xml文件…

(leetcode算法题)384. 打乱数组 398. 随机数索引

问题转化: 题目要求将nums中的数字出现的次序随机打乱 转化成:对于 0 号位置来说,nums[i], ..., nums[n - 1] 可以等概率的出现 ... && ... && 对于 n - 1号位置来说,nums[i], ..., nums[n - 1] 可以等概率的出…

Pycharm连接远程解释器

这里写目录标题 0 前言1 给项目添加解释器2 通过SSH连接3 找到远程服务器的torch环境所对应的python路径,并设置同步映射(1)配置服务器的系统环境(2)配置服务器的conda环境 4 进入到程序入口(main.py&#…

kafka使用以及基于zookeeper集群搭建集群环境

一、环境介绍 zookeeper下载地址:https://zookeeper.apache.org/releases.html kafka下载地址:https://kafka.apache.org/downloads 192.168.142.129 apache-zookeeper-3.8.4-bin.tar.gz kafka_2.13-3.6.0.tgz 192.168.142.130 apache-zookee…

大模型系列18-AI Agents

什么是AI Agents Al Agent智能体,是指一种能够模拟人类思考和行为来自动执行任务,以解决复杂问题的程序或系统 架构图 思考->行动->观测 思考依赖记忆以及规划决策,行动依赖工具,观测依赖感知 举例 长沙今天白天和晚上的…

mysql自定义安装

1、下载安装包 我是在windows上安装,所以选择“Mysql Installer for Windows” 2、安装mysql 双击“mysql-installer-community-8.0.40.0.msi”,开始启动安装 这里选择安装项,这里只选择了两项。workbench是图形化管理工具,比较吃…

22408操作系统期末速成/复习(考研0基础上手)

第一部分:计算题: 考察范围:(标红的是重点考) 第一章:CPU利用率: 第二章: 进程调度算法(需要注意不同调度算法的优先级和题目中给出的是否可以抢占【分为可抢占和不可抢占&#xff…

jquery实现的网页版扫雷小游戏源码

源码介绍 这是一款基于jQuery实现的经典扫雷小游戏源码,玩家根据游戏规则进行游戏,末尾再在确定的地雷位置单击右键安插上小红旗即可赢得游戏!是一款非常经典的jQuery游戏代码。本源码改进了获胜之后的读数暂停功能。 效果预览 源码下载 j…

对计网大题的一些指正(中间介绍一下CDM的原理和应用)

目录 前言: (1)五层原理体系结构每层功能: 下面是文档的答案: 我在之前的博客里面有介绍过五层原理体系结构, 按理来说,第五层应该是应用层才对,而会话层的功能应该被放到应用层…

Arduino UNO 驱动1.8 TFT屏幕显示中文

背景 最近入手了一块1.8寸的tft屏幕&#xff0c;通过学习文档&#xff0c;已经掌握了接线&#xff0c;显示英文、数字、矩形区域、划线、画点等操作&#xff0c; 但是想显示中文的时候操作比较复杂。 问题 1、arduino uno 驱动这款屏幕目前使的是自带的<TFT.h> 库操作…

【论文阅读】Anchor-based fast spectral ensemble clustering

论文地址&#xff1a;Anchor-based fast spectral ensemble clustering - ScienceDirect 代码地址&#xff1a; 摘要 集成聚类通过融合多个基础聚类方法&#xff0c;可以获得更好且更稳健的结果&#xff0c;因此受到广泛关注。尽管近年来已经出现了许多代表性的算法&#xff…

检索增强生成 和思维链 结合: 如何创建检索增强思维链 (RAT)?

论文地址&#xff1a;https://arxiv.org/pdf/2403.05313 Github地址&#xff1a;https://github.com/CraftJarvis/RAT 想象一下&#xff0c;一个人工智能助手可以像莎士比亚一样写作&#xff0c;像专家一样推理。这听起来很了不起&#xff0c;对吧&#xff1f;但是&#xff0…

关于数组的一些应用--------数组作函数的返回值(斐波那契数列数列的实现)

数组在作为函数的返回值&#xff0c;一个很经典的例子就是获取斐波那契数列的前N项 代码思路&#xff1a; 设计思路 输入&#xff1a; 输入一个整数 n&#xff0c;表示要生成斐波那契数列的长度。 输出&#xff1a; 输出一个长度为 n 的整数数组&#xff0c;其中每个元素为斐…

【IT人物系列】之MySQL创始人

前言 当今世界有无数的人构成&#xff0c;其中有些人做了一些改变世界的事情&#xff0c;比如&#xff1a;乔布斯缔造了Apple帝国&#xff0c;‌詹姆斯高斯林创造了Java语言等。正是这些优秀的人做的这些优秀的事情&#xff0c;让这个世界更加美好。因此他们值得铭记。 从今天…

【2025最新计算机毕业设计】基于SpringBoot+Vue智慧养老医护系统(高质量源码,提供文档,免费部署到本地)【提供源码+答辩PPT+文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

源代码编译安装X11及相关库、vim,配置vim(2)

一、编译安装vim 编译时的cofigure选项如下.只有上一步的X11的包安装全了&#xff08;具体哪些是必须的&#xff0c;哪些是多余的没验证&#xff09;&#xff0c;configure才能认为X的库文件和头文件是可以用的 ./configure --prefixpwd/mybuild \--x-includes/path/to/X11/m…

LSP介绍并实现语言服务

首发于Enaium的个人博客 LSP (Language Server Protocol) 介绍 前段时间我为Jimmer DTO实现了一个 LSP 的语言服务&#xff0c;这是我第一次实现 LSP&#xff0c;所以在这里我分享一下我实现LSP的经验。 首先来看一下效果&#xff0c;图片太多&#xff0c;我就放一部分&#…

谷粒商城项目125-spring整合high-level-client

新年快乐! 致2025年还在努力学习的你! 你已经很努力了&#xff0c;今晚就让自己好好休息一晚吧! 在后端中选用哪种elasticsearch客户端&#xff1f; elasticsearch可以通过9200或者9300端口进行操作 1&#xff09;9300&#xff1a;TCP spring-data-elasticsearch:transport-…

MyBatis-plus sql拦截器

因为业务需求&#xff0c;重新写了一套数据权限。项目中用的是mybtis-plus&#xff0c;正好MyBatis-Plus提供了插件数据权限插件 | MyBatis-Plus&#xff0c;那就根据文档来实现这个需求。 实现&#xff1a; 实现MultiDataPermissionHandler 首先创建MultiDataPermissionHan…

Docker 远程访问完整配置教程以及核心参数理解

Docker 远程访问完整配置教程 以下是配置 Docker 支持远程访问的完整教程&#xff0c;包括参数说明、配置修改、云服务器安全组设置、主机防火墙配置&#xff0c;以及验证远程访问的详细步骤。 1. 理解 -H fd:// 参数的作用&#xff08;理解了以后容易理解后面的操作&#xff…