¿Alguna forma de mover 2 bytes en x86 de 32 bits usando MOV sin causar un cambio de modo o un bloqueo de la CPU?

Si quiero mover 2 bytes sin firmar de la memoria a un registro de 32 bits, ¿puedo hacer eso con unMOV instrucción y sin interruptor de modo?

Me doy cuenta de que PUEDES hacer eso con elMOVSE yMOVZE instrucciones. Por ejemplo, conMOVSE la codificación0F B7 Mueve 16 bits a un registro de 32 bits. Sin embargo, es una instrucción de 3 ciclos.

Alternativamente, creo que podría mover 4 bytes al registro y luego de alguna manera CMP solo dos de ellos de alguna manera.

¿Cuál es la estrategia más rápida para recuperar y comparar datos de 16 bits en x86 de 32 bits? Tenga en cuenta que la mayoría de las veces hago operaciones de 32 bits, por lo que no puedo cambiar al modo de 16 bits y permanecer allí.

FYI para los no iniciados: el problema aquí es que los procesadores Intel x86 de 32 bits puedenMOV Datos de 8 bits y datos de 16 bits O 32 bits, según el modo en el que se encuentren. Este modo se denomina configuración de "D-bit". Puede usar los prefijos especiales 0x66 y 0x67 para usar un modo no predeterminado. Por ejemplo, si está en el modo de 32 bits y prefijó la instrucción con 0x66, esto causará que el operando sea tratado como de 16 bits. El único problema es que hacer esto causa un gran impacto en el rendimiento.