66 0F 13 /r MOVLPD m64, xmm Move double-precision floating-point nvalue from low
quadword of xmm register to m64.
0F 12 /r MOVLPS xmm, m64 Move two packed single-precision floating-point values
from m64 to low quadword of xmm.
0F 13 /r MOVLPS m64, xmm Move two packed single-precision floating-point values
from low quadword of xmm to m64.
66 0F 50 /r MOVMSKPD r32, xmm Extract 2-bit sign mask of from xmm and store in r32.
0F 50 /r MOVMSKPS r32, xmm Extract 4-bit sign mask of from xmm and store in r32.
66 0F E7 /r MOVNTDQ m128, xmm Move double quadword from xmm to m128
using non-temporal hint.
0F C3 /r MOVNI m32, r32 Move doubleword from r32 to m32
using non-temporal hint.
66 0F 2B /r MOVNTPD m128, xmm Move packed double-precision floating-point values
from xmm to m128 using non-temporal hint.
0F 2B /r MOVNTPS m128, xmm Move packed single-precision floating-point values
from xmm to m128 using non-temporal hint.
0F E7 /r MOVNTQ m64, mm Move quadword from mm to m64 using non-temporal hint.
0F 6F /r MOVQ mm, mm/m64 Move quadword from mm/m64 to mm.
0F 7F /r MOVQ mm/m64, mm Move quadword from mm to mm/m64.
F3 0F 7E MOVQ xmm1, xmm2/m64 Move quadword from xmm2/mem64 to xmm1.
66 0F D6 MOVQ xmm2/m64, xmm1 Move quadword from xmm1 to xmm2/mem64.
F3 0F D6 MOVQ2DQ xmm, mm Move quadword from mmx to low quadword of xmm.
A4 MOVS m8, m8 Move byte at address DS:(E)SI to address ES:(E)DI
A5 MOVS m16, m16 Move word at address DS:(E)SI to address ES:(E)DI
A5 MOVS m32, m32 Move doubleword at address DS:(E)SI
to address ES:(E)DI
A4 MOVSB Move byte at address DS:(E)SI to address ES:(E)DI
A5 MOVSW Move word at address DS:(E)SI to address ES:(E)DI
A5 MOVSD Move doubleword at address DS:(E)SI
to address ES:(E)DI
F2 0F 10 /r MOVSD xmm1, xmm2/m64 Move scalar double-precision floating-point value
from xmm2/m64 to xmm1 register.
F2 0F 11 /r MOVSD xmm2/m64, xmm Move scalar double-precision floating-point value
from xmm1 register to xmm2/m64.
F3 0F 10 /r MOVSS xmm1, xmm2/m32 Move scalar single-precision floating-point value
from xmm2/m64 to xmm1 register.
F3 0F 11 /r MOVSS xmm2/m32, xmm Move scalar single-precision floating-point value
from xmm1 register to xmm2/m64.
0F BE /r MOVSX r16,r/m8 Move byte to word with sign-extension
0F BE /r MOVSX r32,r/m8 Move byte to doubleword, sign-extension
0F BF /r MOVSX r32,r/m16 Move word to doubleword, sign-extension
66 0F 10 /r MOVUPD xmm1, xmm2/m128 Move packed double-precision floating-point values
from xmm2/m128 to xmm1.
66 0F 11 /r MOVUPD xmm2/m128, xmm Move packed double-precision floating-point values
from xmm1 to xmm2/m128.
0F 10 /r MOVUPS xmm1, xmm2/m128 Move packed single-precision floating-point values
from xmm2/m128 to xmm1.
0F 11 /r MOVUPS xmm2/m128, xmm1 Move packed single-precision floating-point values
from xmm1 to xmm2/m128.
0F B6 /r MOVZX r16,r/m8 Move byte to word with zero-extension
0F B6 /r MOVZX r32,r/m8 Move byte to doubleword, zero-extension
0F B7 /r MOVZX r32,r/m16 Move word to doubleword, zero-extension
F6 /4 MUL r/m8 Unsigned multiply (AX ←AL*r/m8)
F7 /4 MUL r/m16 Unsigned multiply (DX:AX ←AX*r/m16)
F7 /4 MUL r/m32 Unsigned multiply (EDX:EAX ←EAX*r/m32)
66 0F 59 /r MULPD xmm1, xmm2/m128 Multiply packed double-precision floating-point values
in xmm2/m128 by xmm1.
0F 59 /r MULPS xmm1, xmm2/m128 Multiply packed single-precision floating-point values
in xmm2/mem by xmm1.
F2 0F 59 /r MULSD xmm1, xmm2/m64 Multiply the low double-precision floating-point value
in xmm2/mem64 by low double-precision
floating-point value in xmm1.
F3 0F 59 /r MULSS xmm1, xmm2/m32 Multiply the low single-precision floating-point value
in xmm2/mem by the low single-precision
floating-point value in xmm1.
F6 /3 NEG r/m8 Two's complement negate r/m8
F7 /3 NEG r/m16 Two's complement negate r/m16
F7 /3 NEG r/m32 Two's complement negate r/m32
90 NOP No operation
F6 /2 NOT r/m8 Reverse each bit of r/m8
F7 /2 NOT r/m16 Reverse each bit of r/m16
F7 /2 NOT r/m32 Reverse each bit of r/m32
0C ib OR AL,imm8 AL OR imm8
0D iw OR AX,imm16 AX OR imm16
0D id OR EAX,imm32 EAX OR imm32
80 /1 ib OR r/m8,imm8 r/m8 OR imm8
81 /1 iw OR r/m16,imm16 r/m16 OR imm16
81 /1 id OR r/m32,imm32 r/m32 OR imm32
83 /1 ib OR r/m16,imm8 r/m16 OR imm8 (sign-extended)
83 /1 ib OR r/m32,imm8 r/m32 OR imm8 (sign-extended)
08 /r OR r/m8,r8 r/m8 OR r8
09 /r OR r/m16,r16 r/m16 OR r16
09 /r OR r/m32,r32 r/m32 OR r32
0A /r OR r8,r/m8 r8 OR r/m8
0B /r OR r16,r/m16 r16 OR r/m16
0B /r OR r32,r/m32 r32 OR r/m32
66 0F 56 /r ORPD xmm1, xmm2/m128 Bitwise OR of xmm2/m128 and xmm1.
0F 56 /r ORPS xmm1, xmm2/m128 Bitwise OR of xmm2/m128 and xmm1
E6 ib OUT imm8, AL Output byte in AL to I/O port address imm8
E7 ib OUT imm8, AX Output word in AX to I/O port address imm8
E7 ib OUT imm8, EAX Output doubleword in EAX to I/O port address imm8
EE OUT DX, AL Output byte in AL to I/O port address in DX
EF OUT DX, AX Output word in AX to I/O port address in DX
EF OUT DX, EAX Output doubleword in EAX to I/O port address in DX
6E OUTS DX, m8 Output byte from memory location specified
in DS:(E)SI to I/O port specified in DX
6F OUTS DX, m16 Output word from memory location specified
in DS:(E)SI to I/O port specified in DX
6F OUTS DX, m32 Output doubleword from memory location specified
in DS:(E)SI to I/O port specified in DX
6E OUTSB Output byte from memory location specified
in DS:(E)SI to I/O port specified in DX
6F OUTSW Output word from memory location specified
in DS:(E)SI to I/O port specified in DX
6F OUTSD Output doubleword from memory location specified
in DS:(E)SI to I/O port specified in DX
0F 63 /r PACKSSWB mm1, mm2/m64 Converts 4 packed signed word integers from
mm1 and from mm2/m64 into 8 packed signed
byte integers in mm1 using signed saturation.
66 0F 63 /r PACKSSWB xmm1, xmm2/m128 Converts 8 packed signed word integers from
xmm1 and from xxm2/m128 into 16 packed signed
byte integers in xxm1 using signed saturation.
0F 6B /r PACKSSDW mm1, mm2/m64 Converts 2 packed signed doubleword integers
from mm1 and from mm2/m64 into 4 packed
signed word integers in mm1 using signed saturation.
66 0F 6B /r PACKSSDW xmm1, xmm2/m128 Converts 4 packed signed doubleword integers
from xmm1 and from xxm2/m128 into 8 packed signed
word integers in xxm1 using signed saturation.
0F 67 /r PACKUSWB mm, mm/m64 Converts 4 signed word integers from mm and 4
signed word integers from mm/m64 into 8 unsigned
byte integers in mm using unsigned saturation.
66 0F 67 /r PACKUSWB xmm1, xmm2/m128 Converts 8 signed word integers from xmm1 and 8
signed word integers from xmm2/m128 into 16 unsigned
byte integers in xmm1 using unsigned saturation.
0F FC /r PADDB mm, mm/m64 Add packed byte integers from mm/m64 and mm.
66 0F FC /r PADDB xmm1,xmm2/m128 Add packed byte integers from xmm2/m128 and xmm1.
0F FD /r PADDW mm, mm/m64 Add packed word integers from mm/m64 and mm.
66 0F FD /r PADDW xmm1, xmm2/m128 Add packed word integers from xmm2/m128 and xmm1.
0F FE /r PADDD mm, mm/m64 Add packed doubleword integers from mm/m64 and mm.
66 0F FE /r PADDD xmm1, xmm2/m128 Add packed doubleword integers
from xmm2/m128 and xmm1.
0F D4 /r PADDQ mm1,mm2/m64 Add quadword integer mm2/m64 to mm1
66 0F D4 /r PADDQ xmm1,xmm2/m128 Add packed quadword integers xmm2/m128 to xmm1
0F EC /r PADDSB mm, mm/m64 Add packed signed byte integers from mm/m64 and
mm and saturate the results.
66 0F EC /r PADDSB xmm1, xmm2/m128 Add packed signed byte integers from xmm2/m128
and xmm1 saturate the results.
0F ED /r PADDSW mm, mm/m64 Add packed signed word integers from mm/m64 and
mm and saturate the results.
66 0F ED /r PADDSW xmm1, xmm2/m128 Add packed signed word integers from xmm2/m128
and xmm1 and saturate the results.
0F DC /r PADDUSB mm, mm/m64 Add packed unsigned byte integers from mm/m64
and mm and saturate the results.
66 0F DC /r PADDUSB xmm1, xmm2/m128 Add packed unsigned byte integers from xmm2/m128
and xmm1 saturate the results.
0F DD /r PADDUSW mm, mm/m64 Add packed unsigned word integers from mm/m64
and mm and saturate the results.
66 0F DD /r PADDUSW xmm1, xmm2/m128 Add packed unsigned word integers from
xmm2/m128 to xmm1 and saturate the results.
0F DB /r PAND mm, mm/m64 Bitwise AND mm/m64 and mm.
66 0F DB /r PAND xmm1, xmm2/m128 Bitwise AND of xmm2/m128 and xmm1.
0F DF /r PANDN mm, mm/m64 Bitwise AND NOT of mm/m64 and mm.
66 0F DF /r PANDN xmm1, xmm2/m128 Bitwise AND NOT of xmm2/m128 and xmm1.
F3 90 PAUSE Gives hint to processor that improves performance
of spin-wait loops.
0F E0 /r PAVGB mm1, mm2/m64 Average packed unsigned byte integers from
mm2/m64 and mm1 with rounding.
66 0F E0, /r PAVGB xmm1, xmm2/m128 Average packed unsigned byte integers from
xmm2/m128 and xmm1 with rounding.
0F E3 /r PAVGW mm1, mm2/m64 Average packed unsigned word integers from
mm2/m64 and mm1 with rounding.
66 0F E3 /r PAVGW xmm1, xmm2/m128 Average packed unsigned word integers from
xmm2/m128 and xmm1 with rounding.
0F 74 /r PCMPEQB mm, mm/m64 Compare packed bytes in mm/m64 and mm for equality.
66 0F 74 /r PCMPEQB xmm1, xmm2/m128 Compare packed bytes in xmm2/m128 and xmm1
for equality.
0F 75 /r PCMPEQW mm, mm/m64 Compare packed words in mm/m64 and mm for equality.
66 0F 75 /r PCMPEQW xmm1, xmm2/m128 Compare packed words in xmm2/m128 and xmm1
for equality.
0F 76 /r PCMPEQD mm, mm/m64 Compare packed doublewords in mm/m64 and mm
for equality.
66 0F 76 /r PCMPEQD xmm1, xmm2/m128 Compare packed doublewords in xmm2/m128 and xmm1
for equality.
0F 64 /r PCMPGTB mm, mm/m64 Compare packed signed byte integers in mm and
mm/m64 for greater than.
66 0F 64 /r PCMPGTB xmm1, xmm2/m128 Compare packed signed byte integers in xmm1 and
xmm2/m128 for greater than.
0F 65 /r PCMPGTW mm, mm/m64 Compare packed signed word integers in mm and
mm/m64 for greater than.
66 0F 65 /r PCMPGTW xmm1, xmm2/m128 Compare packed signed word integers in xmm1
and xmm2/m128 for greater than.
0F 66 /r PCMPGTD mm, mm/m64 Compare packed signed doubleword integers in
mm and mm/m64 for greater than.
66 0F 66 /r PCMPGTD xmm1, xmm2/m128 Compare packed signed doubleword integers in
xmm1 and xmm2/m128 for greater than.
0F C5 /r ib PEXTRW r32, mm, imm8 Extract the word specified by imm8 from mm
and move it to r32.
66 0F C5 /r ib PEXTRW r32, xmm, imm8 Extract the word specified by imm8 from xmm
and move it to a r32.
0F C4 /r ib PINSRW mm, r32/m16, imm8 Insert the low word from r32 or from m16 into
mm at the word position specified by imm8
66 0F C4 /r ib PINSRW xmm, r32/m16, imm8 Move the low word of r32 or from m16 into xmm
at the word position specified by imm8.
0F F5 /r PMADDWD mm, mm/m64 Multiply the packed words in mm by the packed words
in mm/m64, add adjacent doubleword results,
and store in mm.
66 0F F5 /r PMADDWD xmm1, xmm2/m128 Multiply the packed word integers in xmm1 by the
packed word integers in xmm2/m128, add adjacent
doubleword results, and store in xmm1.
0F EE /r PMAXSW mm1, mm2/m64 Compare signed word integers in mm2/m64 and
mm1 and return maximum values.
66 0F EE /r PMAXSW xmm1, xmm2/m128 Compare signed word integers in xmm2/m128 and
xmm1 and return maximum values.
0F DE /r PMAXUB mm1, mm2/m64 Compare unsigned byte integers in mm2/m64 and
mm1 and returns maximum values.
66 0F DE /r PMAXUB xmm1, xmm2/m128 Compare unsigned byte integers in xmm2/m128 and
xmm1 and returns maximum values.
0F EA /r PMINSW mm1, mm2/m64 Compare signed word integers in mm2/m64 and mm1
and return minimum values.
66 0F EA /r PMINSW xmm1, xmm2/m128 Compare signed word integers in xmm2/m128 and
xmm1 and return minimum values.
0F DA /r PMINUB mm1, mm2/m64 Compare unsigned byte integers in mm2/m64 and mm1
and returns minimum values.
66 0F DA /r PMINUB xmm1, xmm2/m128 Compare unsigned byte integers in xmm2/m128 and
xmm1 and returns minimum values.
0F D7 /r PMOVMSKB r32, mm Move a byte mask of mm to r32.
66 0F D7 /r PMOVMSKB r32, xmm Move a byte mask of xmm to r32.
0F E4 /r PMULHUW mm1, mm2/m64 Multiply the packed unsigned word integers
in mm1 register and mm2/m64, and store the
high 16 bits of the results in mm1.
66 0F E4 /r PMULHUW xmm1, xmm2/m128 Multiply the packed unsigned word integers
in xmm1 and xmm2/m128, and store the high
16 bits of the results in xmm1.
0F E5 /r PMULHW mm, mm/m64 Multiply the packed signed word integers
in mm1 register and mm2/m64, and store
the high 16 bits of the results in mm1.
66 0F E5 /r PMULHW xmm1, xmm2/m128 Multiply the packed signed word integers
in xmm1 and xmm2/m128, and store the
high 16 bits of the results in xmm1.
0F D5 /r PMULLW mm, mm/m64 Multiply the packed signed word integers
in mm1 register and mm2/m64, and store
the low 16 bits of the results in mm1.
66 0F D5 /r PMULLW xmm1, xmm2/m128 Multiply the packed signed word integers
in xmm1 and xmm2/m128, and store the
low 16 bits of the results in xmm1.
0F F4 /r PMULUDQ mm1, mm2/m64 Multiply unsigned doubleword integer in mm1
by unsigned doubleword integer in mm2/m64,
and store the quadword result in mm1.
66 OF F4 /r PMULUDQ xmm1, xmm2/m128 Multiply packed unsigned doubleword integers in xmm1
by packed unsigned doubleword integers in xmm2/m128,
and store the quadword results in xmm1.
8F /0 POP r/m16 Pop top of stack into m16; increment stack pointer
8F /0 POP r/m32 Pop top of stack into m32; increment stack pointer
58+ rw POP r16 Pop top of stack into r16; increment stack pointer
58+ rd POP r32 Pop top of stack into r32; increment stack pointer
1F POP DS Pop top of stack into DS; increment stack pointer
07 POP ES Pop top of stack into ES; increment stack pointer
17 POP SS Pop Pop pop of stack into SS; increment stack pointer
0F A1 POP FS Pop top of stack into FS; increment stack pointer
0F A9 POP GS Pop top of stack into GS; increment stack pointer
61 POPA Pop DI, SI, BP, BX, DX, CX, and AX
61 POPAD Pop EDI, ESI, EBP, EBX, EDX, ECX, and EAX
9D POPF Pop top of stack into lower 16 bits of EFLAGS
9D POPFD Pop top of stack into EFLAGS
0F EB /r POR mm, mm/m64 Bitwise OR of mm/m64 and mm.
66 0F EB /r POR xmm1, xmm2/m128 Bitwise OR of xmm2/m128 and xmm1.
0F 18 /1 PREFETCHT0 m8 Move data from m8 closer to the processor
using T0 hint.
0F 18 /2 PREFETCHT1 m8 Move data from m8 closer to the processor
using T1 hint.
0F 18 /3 PREFETCHT2 m8 Move data from m8 closer to the processor
using T2 hint.
0F 18 /0 PREFETCHNTA m8 Move data from m8 closer to the processor
using NTA hint.
0F F6 /r PSADBW mm1, mm2/m64 Computes the absolute differences of the packed
unsigned byte integers from mm2 /m64 and mm1;
differences are then summed to produce
an unsigned word integer result.
66 0F F6 /r PSADBW xmm1, xmm2/m128 Computes the absolute differences of the packed
unsigned byte integers from xmm2 /m128 and xmm1;
the 8 low differences and 8 high differences are
then summed separately to produce two unsigned
word integer results.
66 0F 70 /r ib PSHUFD xmm1, xmm2/m128, imm8 Shuffle the doublewords in xmm2/m128 based
on the encoding in imm8 and store the result
in xmm1.
F3 0F 70 /r ib PSHUFHW xmm1, xmm2/m128, imm8 Shuffle the high words in xmm2/m128 based
on the encoding in imm8 and store the result
in xmm1.
F2 0F 70 /r ib PSHUFLW xmm1, xmm2/m128, imm8 Shuffle the low words in xmm2/m128 based
on the encoding in imm8 and store the result
in xmm1.
0F 70 /r ib PSHUFW mm1, mm2/m64, imm8 Shuffle the words in mm2/m64 based
on the encoding in imm8 and
store the result in in mm1.
66 0F 73 /7 ib PSLLDQ xmm1, imm8 SHift xmm1 left by imm8 bytes while shifting in 0s.
0F F1 /r PSLLW mm, mm/m64 SHift words in mm left mm/m64 while shifting in 0s.
66 0F F1 /r PSLLW xmm1, xmm2/m128 Shift words in xmm1 left by xmm2/m128
while shifting in 0s.
0F 71 /6 ib PSLLW mm, imm8 SHift words in mm left by imm8 while shifting in 0s.
66 0F 71 /6 ib PSLLW xmm1, imm8 SHift words in xmm1 left by imm8
while shifting in 0s.
0F F2 /r PSLLD mm, mm/m64 SHift doublewords in mm left by mm/m64
while shifting in 0s.
66 0F F2 /r PSLLD xmm1, xmm2/m128 Shift doublewords in xmm1 left by xmm2/m128
while shifting in 0s.
0F 72 /6 ib PSLLD mm, imm8 SHift doublewords in mm left by imm8
while shifting in 0s.
66 0F 72 /6 ib PSLLD xmm1, imm8 SHift doublewords in xmm1 left by imm8
while shifting in 0s.
0F F3 /r PSLLQ mm, mm/m64 SHift quadword in mm left by mm/m64
while shifting in 0s.
66 0F F3 /r PSLLQ xmm1, xmm2/m128 Shift quadwords in xmm1 left by xmm2/m128
while shifting in 0s.
0F 73 /6 ib PSLLQ mm, imm8 SHift quadword in mm left by imm8
while shifting in 0s.
66 0F 73 /6 ib PSLLQ xmm1, imm8 SHift quadwords in xmm1 left by imm8
while shifting in 0s.
0F E1 /r PSRAW mm, mm/m64 SHift words in mm right by mm/m64
while shifting in sign bits.
66 0F E1 /r PSRAW xmm1, xmm2/m128 Shift words in xmm1 right by xmm2/m128
while shifting in sign bits.
0F 71 /4 ib PSRAW mm, imm8 SHift words in mm right by imm8 w
hile shifting in sign bits
66 0F 71 /4 ib PSRAW xmm1, imm8 SHift words in xmm1 right by imm8
while shifting in sign bits
0F E2 /r PSRAD mm, mm/m64 SHift doublewords in mm right by mm/m64
while shifting in sign bits.
66 0F E2 /r PSRAD xmm1, xmm2/m128 Shift doubleword in xmm1 right by xmm2 /m128
while shifting in sign bits.
0F 72 /4 ib PSRAD mm, imm8 SHift doublewords in mm right by imm8
while shifting in sign bits.
66 0F 72 /4 ib PSRAD xmm1, imm8 SHift doublewords in xmm1 right by imm8
while shifting in sign bits.
66 0F 73 /3 ib PSRLDQ xmm1, imm8 SHift xmm1 right by imm8 while shifting in 0s.
0F D1 /r PSRLW mm, mm/m64 SHift words in mm right by amount specified in
mm/m64 while shifting in 0s.
66 0F D1 /r PSRLW xmm1, xmm2/m128 Shift words in xmm1 right by amount specified in
xmm2/m128 while shifting in 0s.
0F 71 /2 ib PSRLW mm, imm8 SHift words in mm right by imm8 while shifting in 0s.
66 0F 71 /2 ib PSRLW xmm1, imm8 SHift words in xmm1 right by imm8
while shifting in 0s.
0F D2 /r PSRLD mm, mm/m64 SHift doublewords in mm right by amount specified
in mm/m64 while shifting in 0s.
66 0F D2 /r PSRLD xmm1, xmm2/m128 Shift doublewords in xmm1 right by amount specified
in xmm2 /m128 while shifting in 0s.
0F 72 /2 ib PSRLD mm, imm8 SHift doublewords in mm right by imm8
while shifting in 0s.
66 0F 72 /2 ib PSRLD xmm1, imm8 SHift doublewords in xmm1 right by imm8
while shifting in 0s.
0F D3 /r PSRLQ mm, mm/m64 SHift mm right by amount specified in mm/m64
while shifting in 0s.
66 0F D3 /r PSRLQ xmm1, xmm2/m128 Shift quadwords in xmm1 right by amount specified
in xmm2/m128 while shifting in 0s.
0F 73 /2 ib PSRLQ mm, imm8 SHift mm right by imm8 while shifting in 0s.
66 0F 73 /2 ib PSRLQ xmm1, imm8 SHift quadwords in xmm1 right by imm8
while shifting in 0s.
0F F8 /r PSUBB mm, mm/m64 S Subtract packed byte integers in mm/m64 from packed
byte integers in mm.
66 0F F8 /r PSUBB xmm1, xmm2/m128 Subtract packed byte integers in xmm2/m128 from
packed byte integers in xmm1.
0F F9 /r PSUBW mm, mm/m64 Subtract packed word integers in mm/m64 from packed
word integers in mm.
66 0F F9 /r PSUBW xmm1, xmm2/m128 Subtract packed word integers in xmm2/m128 from
packed word integers in xmm1.
0F FA /r PSUBD mm, mm/m64 Subtract packed doubleword integers in mm/m64 from
packed doubleword integers in mm.
66 0F FA /r PSUBD xmm1, xmm2/m128 Subtract packed doubleword integers in xmm2/mem128
from packed doubleword integers in xmm1.
0F FB /r PSUBQ mm1, mm2/m64 Subtract quadword integer in mm1 from mm2 /m64.
66 0F FB /r PSUBQ xmm1, xmm2/m128 Subtract packed quadword integers in xmm1
from xmm2 /m128.
0F E8 /r PSUBSB mm, mm/m64 Subtract signed packed bytes in mm/m64 from
signed packed bytes in mm and saturate results.
66 0F E8 /r PSUBSB xmm1, xmm2/m128 Subtract packed signed byte integers in xmm2/m128
from packed signed byte integers in xmm1
and saturate results.
0F E9 /r PSUBSW mm, mm/m64 Subtract signed packed words in mm/m64 from
signed packed words in mm and saturate results.
66 0F E9 /r PSUBSW xmm1, xmm2/m128 Subtract packed signed word integers
in xmm2/m128 from packed signed word integers
in xmm1 and saturate results.
0F D8 /r PSUBUSB mm, mm/m64 Subtract unsigned packed bytes in mm/m64 from
unsigned packed bytes in mm and saturate result.
66 0F D8 /r PSUBUSB xmm1, xmm2/m128 Subtract packed unsigned byte integers in xmm2/m128
from packed unsigned byte integers
in xmm1 and saturate result.
0F D9 /r PSUBUSW mm, mm/m64 Subtract unsigned packed words in mm/m64 from
unsigned packed words in mm and saturate result.
66 0F D9 /r PSUBUSW xmm1, xmm2/m128 Subtract packed unsigned word integers in xmm2/m128
from packed unsigned word integers in xmm1
and saturate result.
0F 68 /r PUNPCKHBW mm, mm/m64 Unpack and interleave high-order bytes from
mm and mm/m64 into mm.
66 0F 68 /r PUNPCKHBW xmm1, xmm2/m128 Unpack and interleave high-order bytes from
xmm1 and xmm2/m128 into xmm1.
0F 69 /r PUNPCKHWD mm, mm/m64 Unpack and interleave high-order words from
mm and mm/m64 into mm.
66 0F 69 /r PUNPCKHWD xmm1, xmm2/m128 Unpack and interleave high-order words from
xmm1 and xmm2/m128 into xmm1.
0F 6A /r PUNPCKHDQ mm, mm/m64 Unpack and interleave high-order doublewords
from mm and mm/m64 into mm.
66 0F 6A /r PUNPCKHDQ xmm1, xmm2/m128 Unpack and interleave high-order doublewords
from xmm1 and xmm2/m128 into xmm1.
66 0F 6D /r PUNPCKHQDQ xmm1, xmm2/m128 Unpack and interleave high-order quadwords
from xmm1 and xmm2/m128 into xmm1
0F 60 /r PUNPCKLBW mm, mm/m32 Interleave low-order bytes from mm and
mm/m32 into mm.
66 0F 60 /r PUNPCKLBW xmm1, xmm2/m128 Interleave low-order bytes from xmm1 and
xmm2/m128 into xmm1.
0F 61 /r PUNPCKLWD mm, mm/m32 Interleave low-order words from mm and
mm/m32 into mm.
66 0F 61 /r PUNPCKLWD xmm1, xmm2/m128 Interleave low-order words from xmm1 and
xmm2/m128 into xmm1.
0F 62 /r PUNPCKLDQ mm, mm/m32 Interleave low-order doublewords from mm
and mm/m32 into mm.
66 0F 62 /r PUNPCKLDQ xmm1, xmm2/m128 Interleave low-order doublewords from xmm1
and xmm2/m128 into xmm1.
66 0F 6C /r PUNPCKLQDQ xmm1, xmm2/m128 Interleave low-order quadwords from xmm1
and xmm2/m128 into xmm1 register
FF /6 PUSH r/m16 Push r/m16
FF /6 PUSH r/m32 Push r/m32
50+rw PUSH r16 Push r16
50+rd PUSH r32 Push r32
6A PUSH imm8 Push imm8
68 PUSH imm16 Push imm16
68 PUSH imm32 Push imm32
0E PUSH CS Push CS
16 PUSH SS Push SS
1E PUSH DS Push DS
06 PUSH ES Push ES
0F A0 PUSH FS Push FS
0F A8 PUSH GS Push GS
60 PUSHA Push AX, CX, DX, BX, original SP, BP, SI, and DI
60 PUSHAD Push EAX, ECX, EDX, EBX, original ESP,
EBP, ESI, and EDI
9C PUSHF Push lower 16 bits of EFLAGS
9C PUSHFD Push EFLAGS
0F EF /r PXOR mm, mm/m64 Bitwise XOR of mm/m64 and mm.
66 0F EF /r PXOR xmm1, xmm2/m128 Bitwise XOR of xmm2/m128 and xmm1.
D0 /2 RCL r/m8, 1 Rotate 9 bits (CF, r/m8) left once
D2 /2 RCL r/m8, CL Rotate 9 bits (CF, r/m8) left CL times
C0 /2 ib RCL r/m8, imm8 Rotate 9 bits (CF, r/m8) left imm8 times
D1 /2 RCL r/m16, 1 Rotate 17 bits (CF, r/m16) left once
D3 /2 RCL r/m16, CL Rotate 17 bits (CF, r/m16) left CL times
C1 /2 ib RCL r/m16, imm8 Rotate 17 bits (CF, r/m16) left imm8 times
D1 /2 RCL r/m32, 1 Rotate 33 bits (CF, r/m32) left once
D3 /2 RCL r/m32, CL Rotate 33 bits (CF, r/m32) left CL times
C1 /2 ib RCL r/m32,i mm8 Rotate 33 bits (CF, r/m32) left imm8 times
D0 /3 RCR r/m8, 1 Rotate 9 bits (CF, r/m8) right once
D2 /3 RCR r/m8, CL Rotate 9 bits (CF, r/m8) right CL times
C0 /3 ib RCR r/m8, imm8 Rotate 9 bits (CF, r/m8) right imm8 times
D1 /3 RCR r/m16, 1 Rotate 17 bits (CF, r/m16) right once
D3 /3 RCR r/m16, CL Rotate 17 bits (CF, r/m16) right CL times
C1 /3 ib RCR r/m16, imm8 Rotate 17 bits (CF, r/m16) right imm8 times
D1 /3 RCR r/m32, 1 Rotate 33 bits (CF, r/m32) right once
D3 /3 RCR r/m32, CL Rotate 33 bits (CF, r/m32) right CL times
C1 /3 ib RCR r/m32, imm8 Rotate 33 bits (CF, r/m32) right imm8 times
D0 /0 ROL r/m8, 1 Rotate 8 bits r/m8 left once
D2 /0 ROL r/m8, CL Rotate 8 bits r/m8 left CL times
C0 /0 ib ROL r/m8, imm8 Rotate 8 bits r/m8 left imm8 times
D1 /0 ROL r/m16, 1 Rotate 16 bits r/m16 left once
D3 /0 ROL r/m16, CL Rotate 16 bits r/m16 left CL times
C1 /0 ib ROL r/m16, imm8 Rotate 16 bits r/m16 left imm8 times
D1 /0 ROL r/m32, 1 Rotate 32 bits r/m32 left once
D3 /0 ROL r/m32, CL Rotate 32 bits r/m32 left CL times
C1 /0 ib ROL r/m32, imm8 Rotate 32 bits r/m32 left imm8 times
D0 /1 ROR r/m8, 1 Rotate 8 bits r/m8 right once
D2 /1 ROR r/m8, CL Rotate 8 bits r/m8 right CL times
C0 /1 ib ROR r/m8, imm8 Rotate 8 bits r/m16 right imm8 times
D1 /1 ROR r/m16, 1 Rotate 16 bits r/m16 right once
D3 /1 ROR r/m16, CL Rotate 16 bits r/m16 right CL times
C1 /1 ib ROR r/m16, imm8 Rotate 16 bits r/m16 right imm8 times
D1 /1 ROR r/m32, 1 Rotate 32 bits r/m32 right once
D3 /1 ROR r/m32, CL Rotate 32 bits r/m32 right CL times
C1 /1 ib ROR r/m32, imm8 Rotate 32 bits r/m32 right imm8 times
0F 53 /r RCPPS xmm1, xmm2/m128 Computes the approximate reciprocals of the packed
single-precision floating-point values in xmm2/m128
and stores the results in xmm1.
F3 0F 53 /r RCPSS xmm1, xmm2/m32 Computes the approximate reciprocal of the scalar
single-precision floating-point value in xmm2/m32
and stores the result in xmm1.
0F 32 RDMSR Load MSR specified by ECX into EDX:EAX
0F 33 RDPMC Read performance-monitoring counter specified
by ECX into EDX:EAX
0F 31 RDTSC Read time-stamp counter into EDX:EAX
F3 6C REP INS r/m8, DX Input (E)CX bytes from port DX into ES:[(E)DI]
F3 6D REP INS r/m16, DX Input (E)CX words from port DX into ES:[(E)DI]
F3 6D REP INS r/m32, DX Input (E)CX doublewords from port DX into ES:[(E)DI]
F3 A4 REP MOVS m8, m8 Move (E)CX bytes from DS:[(E)SI] to ES:[(E)DI]
F3 A5 REP MOVS m16, m16 Move (E)CX words from DS:[(E)SI] to ES:[(E)DI]
F3 A5 REP MOVS m32, m32 Move (E)CX doublewords from DS:[(E)SI] to ES:[(E)DI]
F3 6E REP OUTS DX, r/m8 Output (E)CX bytes from DS:[(E)SI] to port DX
F3 6F REP OUTS DX, r/m16 Output (E)CX words from DS:[(E)SI] to port DX
F3 6F REP OUTS DX, r/m32 Output (E)CX doublewords from DS:[(E)SI] to port DX
F3 AC REP LODS AL Load (E)CX bytes from DS:[(E)SI] to AL
F3 AD REP LODS AX Load (E)CX words from DS:[(E)SI] to AX
F3 AD REP LODS EAX Load (E)CX doublewords from DS:[(E)SI] to EAX
F3 AA REP STOS m8 Fill (E)CX bytes at ES:[(E)DI] with AL
F3 AB REP STOS m16 Fill (E)CX words at ES:[(E)DI] with AX
F3 AB REP STOS m32 Fill (E)CX doublewords at ES:[(E)DI] with EAX
F3 A6 REPE CMPS m8, m8 Find nonmatching bytes in ES:[(E)DI] and DS:[(E)SI]
F3 A7 REPE CMPS m16, m16 Find nonmatching words in ES:[(E)DI] and DS:[(E)SI]
F3 A7 REPE CMPS m32, m32 Find nonmatching doublewords in ES:[(E)DI] and DS:[(E)SI]
F3 AE REPE SCAS m8 Find non-AL byte starting at ES:[(E)DI]
F3 AF REPE SCAS m16 Find non-AX word starting at ES:[(E)DI]
F3 AF REPE SCAS m32 Find non-EAX doubleword starting at ES:[(E)DI]
F2 A6 REPNE CMPS m8, m8 Find matching bytes in ES:[(E)DI] and DS:[(E)SI]
F2 A7 REPNE CMPS m16, m16 Find matching words in ES:[(E)DI] and DS:[(E)SI]
F2 A7 REPNE CMPS m32, m32 Find matching doublewords in ES:[(E)DI] and DS:[(E)SI]
F2 AE REPNE SCAS m8 Find AL, starting at ES:[(E)DI]
F2 AF REPNE SCAS m16 Find AX, starting at ES:[(E)DI]
F2 AF REPNE SCAS m32 Find EAX, starting at ES:[(E)DI]
C3 RET Near return to calling procedure
cb RET Far return to calling procedure
C2 iw RET imm16 Near return to calling procedure and
pop imm16 bytes from stack
CA iw RET imm16 Far return to calling procedure and
pop imm16 bytes from stack
0F AA RSM Resume operation of interrupted program
0F 52 /r RSQRTPS xmm1, xmm2/m128 Computes the approximate reciprocals of the square
roots of the packed single-precision floating-point
values in xmm2/m128 and stores the results in xmm1.
F3 0F 52 /r RSQRTSS xmm1,xmm2/m32 Computes the approximate reciprocal of the square
root of the low single-precision floating-point
value in xmm2/m32 and stores the results in xmm1.
9E SAHF Loads SF, ZF, AF, PF, and CF from AH
into EFLAGS register
D0 /4 SAL r/m8,1 Multiply r/m8 by 2, once
D2 /4 SAL r/m8,CL Multiply r/m8 by 2, CL times
C0 /4 ib SAL r/m8,imm8 Multiply r/m8 by 2, imm8 times
D1 /4 SAL r/m16,1 Multiply r/m16 by 2, once
D3 /4 SAL r/m16,CL Multiply r/m16 by 2, CL times
C1 /4 ib SAL r/m16,imm8 Multiply r/m16 by 2, imm8 times
D1 /4 SAL r/m32,1 Multiply r/m32 by 2, once
D3 /4 SAL r/m32,CL Multiply r/m32 by 2, CL times
C1 /4 ib SAL r/m32,imm8 Multiply r/m32 by 2, imm8 times
D0 /7 SAR r/m8,1 Signed divide* r/m8 by 2, once
D2 /7 SAR r/m8,CL Signed divide* r/m8 by 2, CL times
C0 /7 ib SAR r/m8,imm8 Signed divide* r/m8 by 2, imm8 times
D1 /7 SAR r/m16,1 Signed divide* r/m16 by 2, once
D3 /7 SAR r/m16,CL Signed divide* r/m16 by 2, CL times
C1 /7 ib SAR r/m16,imm8 Signed divide* r/m16 by 2, imm8 times
D1 /7 SAR r/m32,1 Signed divide* r/m32 by 2, once
D3 /7 SAR r/m32,CL Signed divide* r/m32 by 2, CL times
C1 /7 ib SAR r/m32,imm8 Signed divide* r/m32 by 2, imm8 times
D0 /4 SHL r/m8,1 Multiply r/m8 by 2, once
D2 /4 SHL r/m8,CL Multiply r/m8 by 2, CL times
C0 /4 ib SHL r/m8,imm8 Multiply r/m8 by 2, imm8 times
D1 /4 SHL r/m16,1 Multiply r/m16 by 2, once
D3 /4 SHL r/m16,CL Multiply r/m16 by 2, CL times
C1 /4 ib SHL r/m16,imm8 Multiply r/m16 by 2, imm8 times
D1 /4 SHL r/m32,1 Multiply r/m32 by 2, once
D3 /4 SHL r/m32,CL Multiply r/m32 by 2, CL times
C1 /4 ib SHL r/m32,imm8 Multiply r/m32 by 2, imm8 times
D0 /5 SHR r/m8,1 Unsigned divide r/m8 by 2, once
D2 /5 SHR r/m8,CL Unsigned divide r/m8 by 2, CL times
C0 /5 ib SHR r/m8,imm8 Unsigned divide r/m8 by 2, imm8 times
D1 /5 SHR r/m16,1 Unsigned divide r/m16 by 2, once
D3 /5 SHR r/m16,CL Unsigned divide r/m16 by 2, CL times
C1 /5 ib SHR r/m16,imm8 Unsigned divide r/m16 by 2, imm8 times
D1 /5 SHR r/m32,1 Unsigned divide r/m32 by 2, once
D3 /5 SHR r/m32,CL Unsigned divide r/m32 by 2, CL times
C1 /5 ib SHR r/m32,imm8 Unsigned divide r/m32 by 2, imm8 times
1C ib SBB AL,imm8 Subtract with borrow imm8 from AL
1D iw SBB AX,imm16 Subtract with borrow imm16 from AX
1D id SBB EAX,imm32 Subtract with borrow imm32 from EAX
80 /3 ib SBB r/m8,imm8 Subtract with borrow imm8 from r/m8
81 /3 iw SBB r/m16,imm16 Subtract with borrow imm16 from r/m16
81 /3 id SBB r/m32,imm32 Subtract with borrow imm32 from r/m32
83 /3 ib SBB r/m16,imm8 Subtract with borrow sign-extended imm8 from r/m16
83 /3 ib SBB r/m32,imm8 Subtract with borrow sign-extended imm8 from r/m32
18 /r SBB r/m8,r8 Subtract with borrow r8 from r/m8
19 /r SBB r/m16,r16 Subtract with borrow r16 from r/m16
19 /r SBB r/m32,r32 Subtract with borrow r32 from r/m32
1A /r SBB r8,r/m8 Subtract with borrow r/m8 from r8
1B /r SBB r16,r/m16 Subtract with borrow r/m16 from r16
1B /r SBB r32,r/m32 Subtract with borrow r/m32 from r32
AE SCAS m8 Compare AL with byte at ES:(E)DI and set status flags
AF SCAS m16 Compare AX with word at ES:(E)DI and set status flags
AF SCAS m32 Compare EAX with doubleword at ES(E)DI and
SET status flags
AE SCASB Compare AL with byte at ES:(E)DI and set status flags
AF SCASW Compare AX with word at ES:(E)DI and set status flags
AF SCASD Compare EAX with doubleword at ES:(E)DI and
SET status flags
0F 97 SETA r/m8 SET byte if above (CF=0 and ZF=0)
0F 93 SETAE r/m8 SET byte if above or equal (CF=0)
0F 92 SETB r/m8 SET byte if below (CF=1)
0F 96 SETBE r/m8 SET byte if below or equal (CF=1 or ZF=1)
0F 92 SETC r/m8 SET if carry (CF=1)
0F 94 SETE r/m8 SET byte if equal (ZF=1)
0F 9F SETG r/m8 SET byte if greater (ZF=0 and SF=OF)
0F 9D SETGE r/m8 SET byte if greater or equal (SF=OF)
0F 9C SETL r/m8 SET byte if less (SF<>OF)
0F 9E SETLE r/m8 SET byte if less or equal (ZF=1 or SF<>OF)
0F 96 SETNA r/m8 SET byte if not above (CF=1 or ZF=1)
0F 92 SETNAE r/m8 SET byte if not above or equal (CF=1)
0F 93 SETNB r/m8 SET byte if not below (CF=0)
0F 97 SETNBE r/m8 SET byte if not below or equal (CF=0 and ZF=0)
0F 93 SETNC r/m8 SET byte if not carry (CF=0)
0F 95 SETNE r/m8 SET byte if not equal (ZF=0)
0F 9E SETNG r/m8 SET byte if not greater (ZF=1 or SF<>OF)
0F 9C SETNGE r/m8 SET if not greater or equal (SF<>OF)
0F 9D SETNL r/m8 SET byte if not less (SF=OF)
0F 9F SETNLE r/m8 SET byte if not less or equal (ZF=0 and SF=OF)
0F 91 SETNO r/m8 SET byte if not overflow (OF=0)
0F 9B SETNP r/m8 SET byte if not parity (PF=0)
0F 99 SETNS r/m8 SET byte if not sign (SF=0)
0F 95 SETNZ r/m8 SET byte if not zero (ZF=0)
0F 90 SETO r/m8 SET byte if overflow (OF=1)
0F 9A SETP r/m8 SET byte if parity (PF=1)
0F 9A SETPE r/m8 SET byte if parity even (PF=1)
0F 9B SETPO r/m8 SET byte if parity odd (PF=0)
0F 98 SETS r/m8 SET byte if sign (SF=1)
0F 94 SETZ r/m8 SET byte if zero (ZF=1)
0F AE /7 SFENCE Serializes store operations.
0F 01 /0 SGDT m Store GDTR to m
0F 01 /1 SIDT m Store IDTR to m
0F A4 SHLD r/m16, r16, imm8 SHift r/m16 to left imm8 places while shifting bits
from r16 in from the right
0F A5 SHLD r/m16, r16, CL SHift r/m16 to left CL places while shifting bits
from r16 in from the right
0F A4 SHLD r/m32, r32, imm8 SHift r/m32 to left imm8 places while shifting bits
from r32 in from the right
0F A5 SHLD r/m32, r32, CL SHift r/m32 to left CL places while shifting bits
from r32 in from the right
0F AC SHRD r/m16, r16, imm8 SHift r/m16 to right imm8 places while shifting bits
from r16 in from the left
0F AD SHRD r/m16, r16, CL SHift r/m16 to right CL places while shifting bits
from r16 in from the left
0F AC SHRD r/m32, r32, mm8 SHift r/m32 to right imm8 places while shifting bits
from r32 in from the left
0F AD SHRD r/m32, r32, CL SHift r/m32 to right CL places while shifting bits
from r32 in from the left
66 0F C6 /r ib SHUFPD xmm1, xmm2/m128, imm8 Shuffle packed double-precision
floating-point values selected by imm8
from xmm1 and xmm1/m128 to xmm1.
0F C6 /r ib SHUFPS xmm1, xmm2/m128, imm8 Shuffle packed single-precision
floating-point values selected by imm8
from xmm1 and xmm1/m128 to xmm1.
0F 00 /0 SLDT r/m16 Stores segment selector from LDTR in r/m16
0F 00 /0 SLDT r/m32 Store segment selector from LDTR in
low-order 16 bits of r/m32
0F 01 /4 SMSW r/m16 Store machine status word to r/m16
0F 01 /4 SMSW r32/m16 Store machine status word in low-order 16 bits of
r32/m16; high-order 16 bits of r32 are undefined
66 0F 51 /r SQRTPD xmm1, xmm2/m128 Computes square roots of the packed double-precision
floating-point values in xmm2/m128 and
stores the results in xmm1.
0F 51 /r SQRTPS xmm1, xmm2/m128 Computes square roots of the packed single-precision
floating-point values in xmm2/m128 and
stores the results in xmm1.
F2 0F 51 /r SQRTSD xmm1, xmm2/m64 Computes square root of the low double-precision
floating-point value in xmm2/m64 and
stores the results in xmm1.
F3 0F 51 /r SQRTSS xmm1, xmm2/m32 Computes square root of the low single-precision
floating-point value in xmm2/m32 and
stores the results in xmm1.
F9 STC SET CF flag
FD STD SET DF flag
FB STI SET interrupt flag; external, maskable interrupts
enabled at the end of the next instruction
0F AE /3 STMXCSR m32 Store contents of MXCSR register to m32.
AA STOS m8 Store AL at address ES:(E)DI
AB STOS m16 Store AX at address ES:(E)DI
AB STOS m32 Store EAX at address ES:(E)DI
AA STOSB Store AL at address ES:(E)DI
AB STOSW Store AX at address ES:(E)DI
AB STOSD Store EAX at address ES:(E)DI
0F 00 /1 STR r/m16 Stores segment selector from TR in r/m16
2C ib SUB AL,imm8 Subtract imm8 from AL
2D iw SUB AX,imm16 Subtract imm16 from AX
2D id SUB EAX,imm32 Subtract imm32 from EAX
80 /5 ib SUB r/m8,imm8 Subtract imm8 from r/m8
81 /5 iw SUB r/m16,imm16 Subtract imm16 from r/m16
81 /5 id SUB r/m32,imm32 Subtract imm32 from r/m32
83 /5 ib SUB r/m16,imm8 Subtract sign-extended imm8 from r/m16
83 /5 ib SUB r/m32,imm8 Subtract sign-extended imm8 from r/m32
28 /r SUB r/m8,r8 Subtract r8 from r/m8
29 /r SUB r/m16,r16 Subtract r16 from r/m16
29 /r SUB r/m32,r32 Subtract r32 from r/m32
2A /r SUB r8,r/m8 Subtract r/m8 from r8
2B /r SUB r16,r/m16 Subtract r/m16 from r16
2B /r SUB r32,r/m32 Subtract r/m32 from r32
66 0F 5C /r SUBPD xmm1, xmm2/m128 Subtract packed double-precision floating-point
values in xmm2/m128 from xmm1.
0F 5C /r SUBPS xmm1 xmm2/m128 Subtract packed single-precision floating-point
values in xmm2/mem from xmm1.
F2 0F 5C /r SUBSD xmm1, xmm2/m64 Subtracts the low double-precision floating-point
values in xmm2/mem64 from xmm1.
F3 0F 5C /r SUBSS xmm1, xmm2/m32 Subtract the lower single-precision floating-point
values in xmm2/m32 from xmm1.
0F 34 SYSENTER Fast call to privilege level 0 system procedures
0F 35 SYSEXIT Fast return to privilege level 3 user code.
A8 ib TEST AL,imm8 AND imm8 with AL; set SF, ZF, PF according to result
A9 iw TEST AX,imm16 AND imm16 with AX; set SF, ZF, PF according to result
A9 id TEST EAX,imm32 AND imm32 with EAX; set SF, ZF, PF according to result
F6 /0 ib TEST r/m8,imm8 AND imm8 with r/m8; set SF, ZF, PF according to result
F7 /0 iw TEST r/m16,imm16 AND imm16 with r/m16; set SF, ZF, PF according to result
F7 /0 id TEST r/m32,imm32 AND imm32 with r/m32; set SF, ZF, PF according to result
84 /r TEST r/m8,r8 AND r8 with r/m8; set SF, ZF, PF according to result
85 /r TEST r/m16,r16 AND r16 with r/m16; set SF, ZF, PF according to result
85 /r TEST r/m32,r32 AND r32 with r/m32; set SF, ZF, PF according to result
66 0F 2E /r UCOMISD xmm1, xmm2/m64 Compares (unordered) the low double-precision
floating-point values in xmm1 and xmm2/m64 and
SET the EFLAGS accordingly.
0F 2E /r UCOMISS xmm1,xmm2/m32 Compare lower single-precision floating-point value
in xmm1 register with lower single-precision
floating-point value in xmm2/mem and
SET the status flags accordingly.
0F 0B UD2 Raise invalid opcode exception
66 0F 15 /r UNPCKHPD xmm1, xmm2/m128 Unpacks and Interleaves double-precision
floating-point values from high quadwords
of xmm1 and xmm2/m128.
0F 15 /r UNPCKHPS xmm1, xmm2/m128 Unpacks and Interleaves single-precision
floating-point values from high quadwords
of xmm1 and xmm2/mem into xmm1.
66 0F 14 /r UNPCKLPD xmm1, xmm2/m128 Unpacks and Interleaves double-precision
floating-point values from low quadwords
of xmm1 and xmm2/m128.
0F 14 /r UNPCKLPS xmm1, xmm2/m128 Unpacks and Interleaves single-precision
floating-point values from low quadwords
of xmm1 and xmm2/mem into xmm1.
0F 00 /4 VERR r/m16 SET ZF=1 if segment specified
with r/m16 can be read
0F 00 /5 VERW r/m16 SET ZF=1 if segment specified
with r/m16 can be written
9B WAIT Check pending unmasked floating-point exceptions.
9B FWAIT Check pending unmasked floating-point exceptions.
0F 09 WBINVD Write back and flush Internal caches; initiate
writing-back and flushing of external caches.
0F 30 WRMSR Write the value in EDX:EAX to MSR specified by ECX
0F C0 /r XADD r/m8, r8 Exchange r8 and r/m8; load sum into r/m8.
0F C1 /r XADD r/m16, r16 Exchange r16 and r/m16; load sum into r/m16.
0F C1 /r XADD r/m32, r32 Exchange r32 and r/m32; load sum into r/m32.
90+rw XCHG AX, 16 Exchange r16 with AX
90+rw XCHG r16, X Exchange AX with r16
90+rd XCHG EAX, r32 Exchange r32 with EAX
90+rd XCHG r32, EAX Exchange EAX with r32
86 /r XCHG r/m8, r8 Exchange r8 (byte register) with byte from r/m8
86 /r XCHG r8, r/m8 Exchange byte from r/m8 with r8 (byte register)
87 /r XCHG r/m16, r16 Exchange r16 with word from r/m16
87 /r XCHG r16, r/m16 Exchange word from r/m16 with r16
87 /r XCHG r/m32, r32 Exchange r32 with doubleword from r/m32
87 /r XCHG r32, r/m32 Exchange doubleword from r/m32 with r32
D7 XLAT m8 SET AL to memory byte DS:[(E)BX + unsigned AL]
D7 XLATB SET AL to memory byte DS:[(E)BX + unsigned AL]
34 ib XOR AL,imm8 AL XOR imm8
35 iw XOR AX,imm16 AX XOR imm16
35 id XOR EAX,imm32 EAX XOR imm32
80 /6 ib XOR r/m8,imm8 r/m8 XOR imm8
81 /6 iw XOR r/m16,imm16 r/m16 XOR imm16
81 /6 id XOR r/m32,imm32 r/m32 XOR imm32
83 /6 ib XOR r/m16,imm8 r/m16 XOR imm8 (sign-extended)
83 /6 ib XOR r/m32,imm8 r/m32 XOR imm8 (sign-extended)
30 /r XOR r/m8,r8 r/m8 XOR r8
31 /r XOR r/m16,r16 r/m16 XOR r16
31 /r XOR r/m32,r32 r/m32 XOR r32
32 /r XOR r8,r/m8 r8 XOR r/m8
33 /r XOR r16,r/m16 r16 XOR r/m8
33 /r XOR r32,r/m32 r32 XOR r/m8
66 0F 57 /r XORPD xmm1, xmm2/m128 Bitwise exclusive-OR of xmm2/m128 and xmm1
0F 57 /r XORPS xmm1, xmm2/m128 Bitwise exclusive-OR of xmm2/m128 and xmm1.
指令前缀:
ES: 26 ES段跨越前缀
CS: 2E CS段跨越前缀
SS: 36 SS段跨越前缀
DS: 3E DS段跨越前缀
FS: 64 FS段跨越前缀
GS: 65 GS段跨越前缀
Opsize: 66 操作数类型跨越前缀
Address: 67 地址类型跨越前缀
上述指令中所使用符号的说明:
/digit -- 0到7之间的数字,用于只使用寄存器/内存操作数的指令的 ModR/M字节,作为指令扩展码
/r -- 表明指令的ModR/M字节既包含寄存器操作数,又包含内存操作数
cb -- 相对于下一条指令的字节偏移值
cw -- 相对于下一条指令的字偏移值
cd -- 相对于下一条指令的双字偏移值
cp -- 绝对远指针
ib, iw, id -- ib:1字节立即数;iw:2字节立即数;id:4字节立即数
+rb, +rw, +rd -- 寄存器代码,从0到7,被加到操作数字节:
rb rw rd
----------------------
AL = 0 AX = 0 EAX = 0
CL = 1 CX = 1 ECX = 1
DL = 2 DX = 2 EDX = 2
BL = 3 BX = 3 EBX = 3
AH = 4 SP = 4 ESP = 4
CH = 5 BP = 5 EBP = 5
DH = 6 SI = 6 ESI = 6
BH = 7 DI = 7 EDI = 7
+i -- 用于浮点指令的数字,表示ST(i)之一
rel8 -- 8位相对地址,范围:-128 ~ 127
rel16, rel32 -- 同一段内的相对地址
ptr16:16,ptr16:32 -- 远指针,典型应用于跨段指令
r8 -- 8位通用寄存器
r16 -- 16位通用寄存器
r32 -- 32位通用寄存器
imm8 -- 8位立即数
imm16 -- 16位立即数
imm32 -- 32位立即数
r/m8 -- 8位通用寄存器或内存字节
r/m16 -- 16位通用寄存器或内存字节
r/m32 -- 32位通用寄存器或内存字节
m -- 16位或32位内存操作数
m8 -- 由DS:(E)SI或ES:(E)DI指向的内存字节
m16 -- 由DS:(E)SI或ES:(E)DI指向的内存字
m32 -- 由DS:(E)SI或ES:(E)DI指向的内存双字
m64 -- 内存四字,仅用于CMPXCHG8B指令
m16:16, m16:32 -- 包含两个数据的内存指针操作数,引号前面的是段地址,引号后面的是偏移地址
m16&32, m16&16, m32&32 -- 包含数据对的内存操作数
moffs8, moffs16, moffs32 -- 分别表示类型为字节、字、双字的内存变量
Sreg -- 段寄存器,ES=0, CS=1, SS=2, DS=3, FS=4, GS=5
m32real, m64real, m80real -- 单精度、双精度、扩展双精度内存浮点操作数
m16int, m32int, m64int -- 字型、双字型、四字型内存整数操作数
ST or ST(0) -- FPU寄存器堆栈栈顶元素
ST(i) -- 从FPU寄存器堆栈栈顶数起的第i个元素,i = 0,1,2,3,4,5,6,7
mm -- MMX寄存器,从MM0到MM7
mm/m32 -- MMX寄存器的低32位或32位内存操作数
mm/m64 -- MMX寄存器或64位内存操作数
xmm -- 128位XMM寄存器,从XMM0到XMM7
xmm/m32 -- XMM寄存器或32位内存操作数
xmm/m64 -- XMM寄存器或64位内存操作数
xmm/m128 -- XMM寄存器或128位内存操作数 |
发表评论 取消回复