跟着锅子一步步学习32位汇编(4)---EFLAGS及标志位操作指令
先看图
园子里找的图,再附上理论,具体操作等以后慢慢讲。
标志寄存器用来保存在一条指令执行完成后,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及标志位操作指令相关推荐
- 32位汇编第七讲,混合编程,内联汇编
32位汇编第七讲,混合编程 博客园IBinary原创 QQ:2510908331 博客连接:http://www.cnblogs.com/iBinary/ 转载请注明出处,谢谢 混合编程的概念,有时 ...
- 32位汇编ebp、ebp-4、ebp+4、ebp+8等含义
我们知道,当调用了一个函数后,底层汇编大多数会使用ebp寻址的方式去查找参数,关于ebp与esp寻址可以看我这篇文章<ebp寻址>. 下面简单说总结一下ebp几个偏移的含义: ebp: ...
- 汇编——32位汇编基础框架
代码 .586 .model flat,stdcall option casemap:noneincludelib ucrt.lib includelib legacy_stdio_definitio ...
- 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址
32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...
- 【汇编语言】结合C语言,使用VS 2017调试模式下的反汇编工具学习32位x86汇编指令
0 前言 简要说明x86系列指令集的整体概况与变化. 我给到你补充学习内容:使用VS学习汇编语言的教程 1 8086CPU到现代CPU的变化 做一些了解即可,不是绝对的,取决于设计工艺以及用途,不同计 ...
- 【汇编语言】32位汇编总结
x86汇编语言 学习操作系统前对汇编语言进行快速学习,转载自x86汇编语言进行总结. 汇编程序的布局 清单A-1显示了一个简单的C程序,清单A-2显示了由GCC v5.4.0对应生成的汇编程序,第1章 ...
- PowerPC 32位汇编入门讲解
第一部分 PowerPC 精简指令集计算机(RISC)简介 PowerPC 体系结构是一种精减指令集计算机(ReducedInstruction Set Computer,RISC)体系结构,定义了 ...
- 32位汇编寄存器及汇编指令
32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和 ...
- 64位linux下玩32位汇编编程
无法按照原来的方式,直接用as test32.s -o test32.o汇编 直接用ld test32.o -o test32链接 直接报错,由于我的linux是64位,解决方法就是在两个命令 ...
最新文章
- 归并排序原理及代码模板
- linux下SublimeText的中文输入法问题之解决方案
- python从零基础到项目实战怎么样-Python 3.x网络爬虫从零基础到项目实战
- C#之windows桌面软件第五课:串口助手实现定时关闭设备、鼠标移动使按钮颜色变化功能
- Linux之最常用的20条命令
- 通用属性配置文件(Generic Attribute profile,GATT)
- OneData建设探索之路:SaaS收银运营数仓建设
- Effective Java阅读笔记——引言
- SAP Engagement Center的ShellCarousel控件control
- java 编程工具_Java开发工具可以促进编程!
- 复盘二进制的习题(2)
- Unity3d读取XML配置文件
- Linux下如何杀死终端
- 用户权限管理shiro
- C语言如何输出100以内的质数?(带注释)
- 【matlab】 matlab中如何取整
- python dict.get 用法
- 一个老程序员的计算机视觉蹒跚学习之路
- 公众号如何涨粉?会其中一种都可以让你爆粉
- Excel公式-文本查找函数
热门文章
- 大数据之-Hadoop3.x_MapReduce工作流程---大数据之hadoop3.x工作笔记0109
- 大数据_Hbase-API访问_Java操作Hbase_数据操作_命名空间创建_表创建_表查询---Hbase工作笔记0013
- Netty工作笔记0072---Protobuf内容小结
- Netty工作笔记0004---BIO简介,介绍说明
- VMware安装ubuntu中几个问题的解决——VMware Tools
- js-array自增长方式
- C++ Socket 编程
- RichEdit控件的使用(未完)
- bluestacks手机模拟器安装qq或微信时,鼠标左键点聊天编辑框后会自动输入 c 字母
- 嵌入式电路设计(入门)