编程语言
首页 > 编程语言> > 汇编之标志寄存器(flag)——EFL

汇编之标志寄存器(flag)——EFL

作者:互联网

标志寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。

如一个flag寄存器为:

   0000 0206    (16进制)

拆成(2进制):

  0000 0000 0000 0000 0000 0010 0000 0110

 

(1)DF位/方向位(第十位):

第10位从下标开始算:

  0000 0000 0000 0000 0000 0010 0000 0110

DF位如果是0的时候,每次执行完MOVS指令后,ESI和EDI的地址都会发生变化。

 Debug工具中双击D即可修改:

 

 

例:MOVS指令复制内容:MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]

正常执行结束,ESI和EDI的值应该变成98和78

ESI和EDI存的地址:,且DF位设置为1。正

ESI&EDI存的地址的值:

 

F8执行完结果:可见94位置的数据两个字的数据已经被全数复制到了74位置。

 

这时再看ESI和EDI的变化:,原本的94和74已经变成了90和70。两个的值都向后退了4位。

 

 

(2)其它位待补充。

 

标签:0000,DF,EDI,flag,EFL,寄存器,MOVS,ESI
来源: https://www.cnblogs.com/codexlx/p/13245935.html