编译器错误 C2422

“操作数”中的非法段替代

内联程序集代码错误地在操作数上使用段替代运算符(冒号)。 可能的原因包括:

  • 运算符前面的寄存器不是段寄存器。

  • 运算符前面的寄存器不是操作数中唯一的段寄存器。

  • 段替代运算符出现在间接运算符(括号)中。

  • 段替代运算符后面的表达式不是即时操作数或内存操作数。

以下示例生成 C2422:

// C2422.cpp
// processor: x86
int main() {
   _asm {
      mov AX, [BX:ES]   // C2422
      mov AX, ES   // OK
   }
}