软件逆向之标志位

news2025/1/7 12:03:35

进位标志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,2
    
    mov ax,0x5EFE
    add ax,2
    
    mov al,0x5E
    add al,2
    
    mov ah,0x5E
    add ah,2
    

零标志ZF(Zero Flag)

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

  • 示例:

    xor eax,eax
    
    mov 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.coloradmin.cn/o/2271639.html

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

相关文章

api接口技术开发系列如何调用电商平台的按图搜索商品API?

不同电商平台的按图搜索商品 API 调用方法大致相似,以下是一般的调用步骤: 注册与获取权限 注册账号:在相应的电商开放平台注册成为开发者,如淘宝平台、1688 平台等。创建应用:登录后创建应用,填写应用的相…

【Seed-Labs 2.0】Buffer Overflow Attack Lab (Server Version)

说在前面 实验总述 缓冲区溢出是指程序试图写入超出缓冲区边界的数据。恶意用户可利用这一漏洞改变程序的流控制,从而导致恶意代码的执行。本实验的目的是让学生从实践中了解这种类型的漏洞,并学习如何在攻击中利用这种漏洞。 在本实验中,…

WPS表格技巧01-项目管理中的基本功能-计划和每日记录的对应

前言: 在项目管理中,一般就是用些项目管理工具来管理这个任务和 task,但是就是要学这些工具很麻烦,比较好的方法,通用的方法就是用 Excel 表格去做(这非常适合松散的团队组织),然后…

SpringBoot入门之创建一个Hello World项目

文章目录 一、使用传统的方式1、创建一个SpringBoot项目2、配置pom.xml文件3、下载Maven依赖4、创建一个Controller类:com.devops.controller.HelloController5、创建一个引导类:com.devops.HelloApplication6、启动项目8、访问80809、完整项目结构 二、…

机器学习笔记 - 单幅图像深度估计的最新技术

1、深度估计简述 单眼深度估计是一项计算机视觉任务,AI 模型从单个图像中预测场景的深度信息。模型估计场景中对象从一个照相机视点的距离。单目深度估计已广泛用于自动驾驶、机器人等领域。深度估计被认为是最困难的计算机视觉任务之一,因为它要求模型理解对象及其深度信息之…

探索AI在地质科研绘图中的应用:ChatGPT与Midjourney绘图流程与效果对比

文章目录 个人感受一、AI绘图流程1.1 Midjourney(1)环境配置(2)生成prompt(3)完善prompt(4)开始绘图(5)后处理 1.2 ChatGPT不合理的出图结果解决方案 二、主题…

HTML——28.音频的引入

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>音频引入</title></head><body><!--audio:在网页中引入音频当属性名和属性值一样&#xff0c;可以只写属性名src属性:指定音频文件路径&#xff0c;必…

SMTP发送邮件的过程

&#xff08;1&#xff09;SMTP客户端首先请求与服务器端的25号端口建立TCP连接(1分)。&#xff08;2&#xff09;连接建立成功后&#xff0c;客户端和服务器通过握手阶段验证双方身份(1分)。&#xff08;3&#xff09;验证成功后&#xff0c;客户端首先向服务器端通告邮件发送…

计算机毕设-基于springboot的酒店管理系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

从零开始RTSP协议的实时流媒体拉流(pull)的设计与实现(一)

此文为系列文章&#xff0c;此系列主要讲解RTSP客户端的拉流及播放&#xff0c;文章持续更新&#xff0c;会从rtsp的基本协议讲起&#xff0c;如何一步步实现音视频的拉流过程&#xff0c;包括一系列涉及到的协议&#xff0c;rtsp&#xff0c;sdp&#xff0c; rtp&#xff08;本…

量子力学复习

黑体辐射 热辐射 绝对黑体&#xff1a; &#xff08;辐射能力很强&#xff0c;完全的吸收体&#xff0c;理想的发射体&#xff09; 辐射实验规律&#xff1a; 温度越高&#xff0c;能量越大&#xff0c;亮度越亮 温度越高&#xff0c;波长越短 光电效应 实验装置&#xf…

如何排查 Apache Doris 中 “Failed to commit txn“ 导入失败问题?

今天来聊聊 Doris 数据导入那些事儿。你是不是在数据导入的时候遇到各种状况&#xff0c;让人头疼不已&#xff1f;别担心&#xff0c;这篇文章给你答案&#xff01; 在 Doris 的版本里&#xff0c;< 2.0.3 的时候&#xff0c;数据迁移存在一些已知的问题&#xff0c;比如可…

基于AT89C51单片机的可暂停八路抢答器设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/90196607?spm1001.2014.3001.5503 C15 部分参考设计如下&#xff1a; 摘要 随着社会进步和科技发展&#xff0c;电子设备在各类活动中的应用日益普遍&#xff0c…

OSCP - Proving Grounds - Pelican

主要知识点 当信息多的时候&#xff0c;耐心搜索Zookeeper exhibitor RCE漏洞 具体步骤 依旧执行Nmap Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-13 22:44 UTC Nmap scan report for 192.168.54.98 Host is up (0.00090s latency). Not shown: 65526 closed …

计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

WebRtc01:课程导学、框架介绍

应用 难点 课程大纲 学习收获 涉及内容 概述 用途 学习收获

特殊车辆检测数据集VOC+YOLO格式2730张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2730 标注数量(xml文件个数)&#xff1a;2730 标注数量(txt文件个数)&#xff1a;2730 …

【AI日记】25.01.04 kaggle 比赛 3-3 | 王慧玲与基层女性

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Forecasting Sticker Sales时间&#xff1a;6 小时 读书 书名&#xff1a;基层女性时间&#xff1a;3 小时原因&#xff1a;虽然我之前就知道这个作者&#xff0c;因为我…

电子应用设计方案85:智能 AI门前柜系统设计

智能 AI 门前柜系统设计 一、引言 智能 AI 门前柜系统旨在提供便捷、安全和智能的物品存储与管理解决方案&#xff0c;适用于家庭、公寓或办公场所的入口区域。 二、系统概述 1. 系统目标 - 实现无接触式物品存取&#xff0c;减少交叉感染风险。 - 具备智能识别和分类功能&am…

GOGOGO 抽象

抽象其实也算面向对象特征之一 抽象 含义&#xff1a;当多个子类中的共性向上提取&#xff0c;父类中不知道如何写具体实现&#xff0c;因为提取的共性并不一定能解决子类中实现的功能【同结构不一定同实现代码体】&#xff0c;就需要抽象概念 作用 父类只抽取结构&#xff…