码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-07-05 15:54:06      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:amp   str   image   信息   变化   style   ptr   lazy   记录   

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

如一个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的地址都会发生变化。

  • 当DF位是0的时候,ESI和EDI的值都会  +1或者+2或者+4(加几取决于移动了1、2、4个字节)
  • 当DF位是1的时候,ESI和EDI的值都会  -1或者-2或者-4(加几取决于移动了-1、-2、-4个字节)

 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)其它位待补充。

 

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

标签:amp   str   image   信息   变化   style   ptr   lazy   记录   

原文地址:https://www.cnblogs.com/codexlx/p/13245935.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!