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

先看图

201103152055444674.png

201103152055592283.png

 

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

标志寄存器用来保存在一条指令执行完成后,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值