首页 > 其他 > 详细

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

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

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

如一个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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!