Erro do compilador C2422
substituição de segmento ilegal em 'operand'
O código de assembly embutido usa incorretamente um operador de substituição de segmento (dois pontos) em um operando. As possíveis causas incluem:
O registro que precede o operador não é um registro de segmento.
O registro que precede o operador não é o único registro de segmento no operando.
O operador de substituição de segmento aparece em um operador de indireção (colchetes).
A expressão que vem após o operador de substituição de segmento não é um operando imediato nem um operando de memória.
O seguinte exemplo gera o erro C2422:
// C2422.cpp
// processor: x86
int main() {
_asm {
mov AX, [BX:ES] // C2422
mov AX, ES // OK
}
}