image/svg+xml MOVSX/MOVSXD—Move with Sign-Extension Instruction Operand Encoding Description Copies the contents of the source operand (register or memory location) to the destination operand (register) and sign extends the value to 16 or 32 bits (see Figure 7-6 in the Intel® 64 and IA-32 Architectures Software Devel- oper’s Manual, Volume 1 ). The size of the converted value depends on the operand-size attribute. In 64-bit mode, the instruction’s default operation size is 32 bits. Use of the REX.R prefix permits access to addi- tional registers (R8-R15). Use of the REX.W prefix promotes operation to 64 bits. See the summary chart at the beginning of this section for encoding data and limits. Operation DEST := SignExtend(SRC); Flags Affected None. Protected Mode Exceptions #GP(0)If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. If the DS, ES, FS, or GS register contains a NULL segment selector. #SS(0)If a memory operand effective address is outside the SS segment limit. #PF(fault-code)If a page fault occurs. #AC(0)If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3. #UD If the LOCK prefix is used. OpcodeInstructionOp/ En 64-Bit Mode Compat/ Leg Mode Description 0F BE / r MOVSX r16, r/m8 RMValidValidMove byte to word with sign-extension. 0F BE / r MOVSX r32, r/m8 RMValidValidMove byte to doubleword with sign- extension. REX.W + 0F BE / r MOVSX r64, r/m8 RMValidN.E.Move byte to quadword with sign-extension. 0F BF / r MOVSX r32, r/m16 RMValidValidMove word to doubleword, with sign- extension. REX.W + 0F BF / r MOVSX r64, r/m16 RMValid N.E.Move word to quadword with sign-extension. 63 / r* MOVSXD r16, r/m16 RMValid N.E.Move word to word with sign-extension. 63 / r* MOVSXD r32, r/m32 RMValid N.E.Move doubleword to doubleword with sign- extension. REX.W + 63 / r MOVSXD r64, r/m32 RMValid N.E.Move doubleword to quadword with sign- extension. NOTES: *The use of MOVSXD without REX.W in 64-bit mode is discouraged. Regular MOV should be used instead of using MOVSXD without REX.W. Op/EnOperand 1Operand 2Operand 3Operand 4 RMModRM:reg (w)ModRM:r/m (r)NANA image/svg+xml Real-Address Mode Exceptions #GPIf a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. #SSIf a memory operand effective address is outside the SS segment limit. #UD If the LOCK prefix is used. Virtual-8086 Mode Exceptions #GP(0)If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. #SS(0)If a memory operand effective address is outside the SS segment limit. #PF(fault-code)If a page fault occurs. #UD If the LOCK prefix is used. Compatibility Mode Exceptions Same exceptions as in protected mode. 64-Bit Mode Exceptions #SS(0)If a memory address referencing the SS segment is in a non-canonical form. #GP(0)If the memory address is in a non-canonical form. #PF(fault-code)If a page fault occurs. #AC(0)If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3. #UD If the LOCK prefix is used. This UNOFFICIAL reference was generated from the official Intel® 64 and IA-32 Architectures Software Developer’s Manual by a dumb script. There is no guarantee that some parts aren't mangled or broken and is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE .