先看图

园子里找的图,再附上理论,具体操作等以后慢慢讲。

标志寄存器用来保存在一条指令执行完成后,CPU所处状态的信息及运算结果的特征。

16位标志寄存器 FLAGS

32位标志寄存器 EFLAGS

SF:若运算结果为负(即结果的最高位为1,因为机器内的数据都是以补码形式表示)则SF=1,否则SF=0

ZF:若运算结果为0,则ZF=1,否则ZF=0

OF:当将操作数作为有符号数看时,用该标志位判断运算结果是否溢出

加法:若同符号数相加,而结果符号与之相反,则OF=1.否则OF=0

减法:被减数与减数异号,而结果的符号与减数相同则OF=1,否则OF=0

(比如5-(-3)的话,结果不应该与减数相同)

CF:将操作数作为无符号数时,用该标志位判断运算结果是否发生了进位或错位。

加法:若运算结果从字或字节的最高位向前产生了进位则CF=1,否则CF=0。

减法:两数相减,若够减无借位,则CF=0,否则CF=1

PF:当运算结果( 只考虑低8位只运算结果相减,若够贱最高位向前产生了仅为果是否发生了仅为阴鑫星)中1的个数为偶数时,PF=1,否则PF=0。此标志位主要用于检测数据在传输过程中的错误

AF:标识做字节运算时低办字节向高半字节的进位和借位

DF:控制串操作指令的处理方向

DF=0,从低地址向高地址,即每次操作后SI、DI递增

DF=1,从高地址向低地址,即每次操作后SI、DI递减

IF:控制CPU是否允许响应外设的中断请求

IF=0,关中断,CPU屏蔽外设的中断请求

IF=1,开中断,CPU响应外设的中断请求

TF(Trap Flag):控制单步执行

TF=0,CPU连续工作

TF=1,CPU单步执行

标志位操作指令

LAHF

功能:将标志寄存器的低8位--->AH

说明:无操作数,也不影响标志位

SAHF

功能:AH -à标志寄存器低8位

说明:标志寄存器原来低8位被冲掉,以AH中的内容取代。该指令不影响高字节内容,因为高字节主要是DF、IF、TF等控制标志,不可以随便改变

PUSHF

功能:标志寄存器内容压入堆栈,即

(SP)-2 -->SP (FLAGS) -->(SP)

PUSHFD

(ESP)-4-->ESP (EFLAGS) -->(ESP)

POPF/POPFD

功能:将栈顶内容送入标志寄存器

CLC

功能;置CF=0

CMC

功能:使CF取反

STC

功能:CF=1

CLD

功能:DF=0

STD

功能:DF=1

CLI

功能:IF=0

STI

功能:IF=1

转载于:https://www.cnblogs.com/guogairenjia/archive/2011/11/04/2236402.html

跟着锅子一步步学习32位汇编(4)---EFLAGS及标志位操作指令相关推荐

  1. 32位汇编第七讲,混合编程,内联汇编

    32位汇编第七讲,混合编程 博客园IBinary原创 QQ:2510908331  博客连接:http://www.cnblogs.com/iBinary/ 转载请注明出处,谢谢 混合编程的概念,有时 ...

  2. 32位汇编ebp、ebp-4、ebp+4、ebp+8等含义

    我们知道,当调用了一个函数后,底层汇编大多数会使用ebp寻址的方式去查找参数,关于ebp与esp寻址可以看我这篇文章<ebp寻址>. 下面简单说总结一下ebp几个偏移的含义: ebp:  ...

  3. 汇编——32位汇编基础框架

    代码 .586 .model flat,stdcall option casemap:noneincludelib ucrt.lib includelib legacy_stdio_definitio ...

  4. 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址

    32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...

  5. 【汇编语言】结合C语言,使用VS 2017调试模式下的反汇编工具学习32位x86汇编指令

    0 前言 简要说明x86系列指令集的整体概况与变化. 我给到你补充学习内容:使用VS学习汇编语言的教程 1 8086CPU到现代CPU的变化 做一些了解即可,不是绝对的,取决于设计工艺以及用途,不同计 ...

  6. 【汇编语言】32位汇编总结

    x86汇编语言 学习操作系统前对汇编语言进行快速学习,转载自x86汇编语言进行总结. 汇编程序的布局 清单A-1显示了一个简单的C程序,清单A-2显示了由GCC v5.4.0对应生成的汇编程序,第1章 ...

  7. PowerPC 32位汇编入门讲解

    第一部分 PowerPC 精简指令集计算机(RISC)简介 PowerPC 体系结构是一种精减指令集计算机(ReducedInstruction Set Computer,RISC)体系结构,定义了 ...

  8. 32位汇编寄存器及汇编指令

    32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和 ...

  9. 64位linux下玩32位汇编编程

    无法按照原来的方式,直接用as  test32.s  -o  test32.o汇编 直接用ld  test32.o -o test32链接 直接报错,由于我的linux是64位,解决方法就是在两个命令 ...

最新文章

  1. 归并排序原理及代码模板
  2. linux下SublimeText的中文输入法问题之解决方案
  3. python从零基础到项目实战怎么样-Python 3.x网络爬虫从零基础到项目实战
  4. C#之windows桌面软件第五课:串口助手实现定时关闭设备、鼠标移动使按钮颜色变化功能
  5. Linux之最常用的20条命令
  6. 通用属性配置文件(Generic Attribute profile,GATT)
  7. OneData建设探索之路:SaaS收银运营数仓建设
  8. Effective Java阅读笔记——引言
  9. SAP Engagement Center的ShellCarousel控件control
  10. java 编程工具_Java开发工具可以促进编程!
  11. 复盘二进制的习题(2)
  12. Unity3d读取XML配置文件
  13. Linux下如何杀死终端
  14. 用户权限管理shiro
  15. C语言如何输出100以内的质数?(带注释)
  16. 【matlab】 matlab中如何取整
  17. python dict.get 用法
  18. 一个老程序员的计算机视觉蹒跚学习之路
  19. 公众号如何涨粉?会其中一种都可以让你爆粉
  20. Excel公式-文本查找函数

热门文章

  1. 大数据之-Hadoop3.x_MapReduce工作流程---大数据之hadoop3.x工作笔记0109
  2. 大数据_Hbase-API访问_Java操作Hbase_数据操作_命名空间创建_表创建_表查询---Hbase工作笔记0013
  3. Netty工作笔记0072---Protobuf内容小结
  4. Netty工作笔记0004---BIO简介,介绍说明
  5. VMware安装ubuntu中几个问题的解决——VMware Tools
  6. js-array自增长方式
  7. C++ Socket 编程
  8. RichEdit控件的使用(未完)
  9. bluestacks手机模拟器安装qq或微信时,鼠标左键点聊天编辑框后会自动输入 c 字母
  10. 嵌入式电路设计(入门)