【问题标题】:Assembly instruction and an extra 2E prefix before its opcode?汇编指令和操作码前的额外 2E 前缀?
【发布时间】:2018-10-04 07:34:55
【问题描述】:

在跟踪一段汇编程序时,遇到了一条指令“CALL DWORD PTR CS:[],操作码为2E:FF15 84244100!现在我很想知道:

  1. 虽然调用指令的操作码是EA,但为什么要使用上面提到的操作码呢?

  2. FF15之前的2E:是什么意思?

【问题讨论】:

  • 2Ecs 段寄存器前缀。 FF15... 操作码是call DWORD PTR ds:0x412484,因为ds 是该指令的默认段寄存器,当未指定时,2E cs 前缀会将其修改为call DWORD PTR cs:0x412484。 ...您为什么不阅读说明指南而不是在这里询问?你会要求你遇到的每一条新指令吗?

标签: assembly x86


【解决方案1】:

2e 是 CS 段覆盖。

FF /2 is call r/m32。调用的目的地在内存操作数中。 (即它从内存中加载一个新的 EIP)。如果没有 CS 前缀,它将使用 DS 段的基础/限制用于该寻址模式。

EA is far jump 所以我认为您的意思是 E8,它是通常调用 rel32 的操作码。)

【讨论】:

  • 谢谢你。但我猜你的意思是“DS覆盖”?据我了解,此指令默认使用 DS。
  • DS 是默认分段。 CS 段覆盖表示改用 CS。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
相关资源
最近更新 更多