home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 December / PCWorld_2001-12_cd.bin / Software / Topware / Hackman / _SETUP.1 / opcodes.dat < prev    next >
Text File  |  2000-10-30  |  56KB  |  901 lines

  1. 00     / r ADD r/m8'r8 Add r8 to r/m8
  2. 01     / r ADD r/m16'r16 Add r16 to r/m16
  3. 01     / r ADD r/m32'r32 Add r32 to r/m32
  4. 02     / r ADD r8'r/m8 Add r/m8 to r8
  5. 03     / r ADD r16'r/m16 Add r/m16 to r16
  6. 03     / r ADD r32'r/m32 Add r/m32 to r32
  7. 04     ib ADD AL' imm8 Add imm8 to AL
  8. 05     iw ADD AX' imm16 Add imm16 to AX
  9. 05     id ADD EAX' imm32 Add imm32 to EAX
  10. 06     PUSH ES Push ES
  11. 07     POP ES Pop top of stack into ES; increment stack pointer
  12. 08     / r OR r/m8'r8 r/m8 OR r8
  13. 09     / r OR r/m16'r16 r/m16 OR r16
  14. 09     / r OR r/m32'r32 r/m32 OR r32
  15. 0A     / r OR r8'r/m8 r8 OR r/m8
  16. 0B     / r OR r16'r/m16 r16 OR r/m16
  17. 0B     / r OR r32'r/m32 r32 OR r/m32
  18. 0C     ib OR AL' imm8 AL OR imm8
  19. 0D     iw OR AX' imm16 AX OR imm16
  20. 0D     id OR EAX' imm32 EAX OR imm32
  21. 0E     PUSH CS Push CS
  22. 0F00     /2 LLDT r/m16 Load segment selector r/m16 into LDTR
  23. 0F00     /3 LTR r/m16 Load r/m16 into task register
  24. 0F00     /0 SLDT r/m16 Stores segment selector from LDTR in r/m16
  25. 0F00     /0 SLDT r/m32 Store segment selector from LDTR in low-order 16 bits of r/m32
  26. 0F00     /1 STR r/m16 Stores segment selector from TR in r/m16
  27. 0F00     /4 VERR r/m16 Set ZF=1 if segment specified with r/m16 can be read
  28. 0F00     /5 VERW r/m16 Set ZF=1 if segment specified with r/m16 can be written
  29. 0F01    /7 INVLPG m Invalidate TLB Entry for page that contains m
  30. 0F01     /2 LGDT m16&32 Load m into GDTR
  31. 0F01     /3 LIDT m16&32 Load m into IDTR
  32. 0F01     /6 LMSW r/m16 Loads r/m16 in machine status word of CR0
  33. 0F01     /0 SGDT m Store GDTR to m
  34. 0F01     /1 SIDT m Store IDTR to m
  35. 0F01     /4 SMSW r/m16 Store machine status word to r/m16
  36. 0F01     /4 SMSW r32/m16 Store machine status word in low-order 16 bits of r32/m16; high-order 16 bits of r32 are undefined
  37. 0F02     / r LAR r16'r/m16 r16 ¼ r/m16 masked by FF00H
  38. 0F02     / r LAR r32'r/m32 r32 ¼ r/m32 masked by 00FxFF00H
  39. 0F03     / r LSL r16'r/m16 Load: r16 ¼ segment limit' selector r/m16
  40. 0F03     / r LSL r32'r/m32 Load: r32 ¼ segment limit' selector r/m32)
  41. 0F06    CLTS Clears TS flag in CR0
  42. 0F08     INVD Flush internal caches; initiate flushing of external caches.
  43. 0F09     WBINVD Write back and flush Internal caches; initiate writing-back and flushing of external caches.
  44. 0F0B     UD2 Raise invalid opcode exception
  45. 0F0F1C    /r PF2IW mmreg1; mmreg2 or PF2IW mmreg; mem64
  46. 0F0F8A    /r PFNACC mmreg1; mmreg2 or PFNACC mmreg; mem64
  47. 0F0F8E    /r PFPNACC mmreg1; mmreg2 or PFPNACC mmreg; mem64
  48. 0F0FBB    /r PSWAPD mmreg1; mmreg2 or PSWAPD mmreg; mem64
  49. 0F0F0C    /r PI2FW mmreg1; mmreg2 or PI2FW mmreg; mem64
  50. 0F18    /0 PREFETCHNTA mem8
  51. 0F18    /1 PREFETCHT0 mem8
  52. 0F18    /2 PREFETCHT1 mem8
  53. 0F18    /3 PREFETCHT2 mem8
  54. 0F30     WRMSR Write the value in EDX:EAX to MSR specified by ECX
  55. 0F31     RDTSC Read time-stamp counter into EDX:EAX
  56. 0F32     RDMSR Load MSR specified by ECX into EDX:EAX
  57. 0F33     RDPMC Read performance-monitoring counter specified by ECX into EDX:EAX
  58. 0F40     /r CMOVO r16' r/m16 Move if overflow (OF=0)
  59. 0F40     /r CMOVO r32' r/m32 Move if overflow (OF=0)
  60. 0F41     /r CMOVNO r16' r/m16 Move if not overflow (OF=0)
  61. 0F41     /r CMOVNO r32' r/m32 Move if not overflow (OF=0)
  62. 0F42     /r CMOVB r16' r/m16 Move if below (CF=1)
  63. 0F42     /r CMOVB r32' r/m32 Move if below (CF=1)
  64. 0F42     /r CMOVC r16' r/m16 Move if carry (CF=1)
  65. 0F42     /r CMOVC r32' r/m32 Move if carry (CF=1)
  66. 0F42     /r CMOVNAE r16' r/m16 Move if not above or equal (CF=1)
  67. 0F42     /r CMOVNAE r32' r/m32 Move if not above or equal (CF=1)
  68. 0F43     /r CMOVAE r16' r/m16 Move if above or equal (CF=0)
  69. 0F43     /r CMOVAE r32' r/m32 Move if above or equal (CF=0)
  70. 0F43     /r CMOVNB r16' r/m16 Move if not below (CF=0)
  71. 0F43     /r CMOVNB r32' r/m32 Move if not below (CF=0)
  72. 0F43     /r CMOVNC r16' r/m16 Move if not carry (CF=0)
  73. 0F43     /r CMOVNC r32' r/m32 Move if not carry (CF=0)
  74. 0F44     /r CMOVE r16' r/m16 Move if equal (ZF=1)
  75. 0F44     /r CMOVE r32' r/m32 Move if equal (ZF=1)
  76. 0F44     /r CMOVZ r16' r/m16 Move if zero (ZF=1)
  77. 0F44     /r CMOVZ r32' r/m32 Move if zero (ZF=1)
  78. 0F45     /r CMOVNE r16' r/m16 Move if not equal (ZF=0)
  79. 0F45     /r CMOVNE r32' r/m32 Move if not equal (ZF=0)
  80. 0F45     /r CMOVNZ r16' r/m16 Move if not zero (ZF=0)
  81. 0F45     /r CMOVNZ r32' r/m32 Move if not zero (ZF=0)
  82. 0F46     /r CMOVBE r16' r/m16 Move if below or equal (CF=1 or ZF=1)
  83. 0F46     /r CMOVBE r32' r/m32 Move if below or equal (CF=1 or ZF=1)
  84. 0F46     /r CMOVNA r16' r/m16 Move if not above (CF=1 or ZF=1)
  85. 0F46     /r CMOVNA r32' r/m32 Move if not above (CF=1 or ZF=1)
  86. 0F47     /r CMOVA r16' r/m16 Move if above (CF=0 and ZF=0)
  87. 0F47     /r CMOVA r32' r/m32 Move if above (CF=0 and ZF=0)
  88. 0F47     /r CMOVNBE r16' r/m16 Move if not below or equal (CF=0 and ZF=0)
  89. 0F47     /r CMOVNBE r32' r/m32 Move if not below or equal (CF=0 and ZF=0)
  90. 0F48     /r CMOVS r16' r/m16 Move if sign (SF=1)
  91. 0F48     /r CMOVS r32' r/m32 Move if sign (SF=1)
  92. 0F49     /r CMOVNS r16' r/m16 Move if not sign (SF=0)
  93. 0F49     /r CMOVNS r32' r/m32 Move if not sign (SF=0)
  94. 0F4A     /r CMOVP r16' r/m16 Move if parity (PF=1)
  95. 0F4A     /r CMOVP r32' r/m32 Move if parity (PF=1)
  96. 0F4A     /r CMOVPE r16' r/m16 Move if parity even (PF=1)
  97. 0F4A     /r CMOVPE r32' r/m32 Move if parity even (PF=1)
  98. 0F4B     /r CMOVNP r16' r/m16 Move if not parity (PF=0)
  99. 0F4B     /r CMOVNP r32' r/m32 Move if not parity (PF=0)
  100. 0F4B     /r CMOVPO r16' r/m16 Move if parity odd (PF=0)
  101. 0F4B     /r CMOVPO r32' r/m32 Move if parity odd (PF=0)
  102. 0F4C     /r CMOVL r16' r/m16 Move if less (SF<>OF)
  103. 0F4C     /r CMOVL r32' r/m32 Move if less (SF<>OF)
  104. 0F4C     /r CMOVNGE r16' r/m16 Move if not greater or equal (SF<>OF)
  105. 0F4C     /r CMOVNGE r32' r/m32 Move if not greater or equal (SF<>OF)
  106. 0F4D     /r CMOVGE r16' r/m16 Move if greater or equal (SF=OF)
  107. 0F4D     /r CMOVGE r32' r/m32 Move if greater or equal (SF=OF)
  108. 0F4D     /r CMOVNL r16' r/m16 Move if not less (SF=OF)
  109. 0F4D     /r CMOVNL r32' r/m32 Move if not less (SF=OF)
  110. 0F4E     /r CMOVLE r16' r/m16 Move if less or equal (ZF=1 or SF<>OF)
  111. 0F4E     /r CMOVLE r32' r/m32 Move if less or equal (ZF=1 or SF<>OF)
  112. 0F4E     /r CMOVNG r16' r/m16 Move if not greater (ZF=1 or SF<>OF)
  113. 0F4E     /r CMOVNG r32' r/m32 Move if not greater (ZF=1 or SF<>OF)
  114. 0F4F     /r CMOVG r16' r/m16 Move if greater (ZF=0 and SF=OF)
  115. 0F4F     /r CMOVG r32' r/m32 Move if greater (ZF=0 and SF=OF)
  116. 0F4F     /r CMOVNLE r16' r/m16 Move if not less or equal (ZF=0 and SF=OF)
  117. 0F4F     /r CMOVNLE r32' r/m32 Move if not less or equal (ZF=0 and SF=OF)
  118. 0F60     /r PUNPCKLBW mm' mm/m32 Interleave low-order bytes from mm and mm/m64 into mm.
  119. 0F61     /r PUNPCKLWD mm' mm/m32 Interleave low-order words from mm and mm/m64 into mm.
  120. 0F62     /r PUNPCKLDQ mm' mm/m32 Interleave low-order doublewords from mm and mm/m64 into mm.
  121. 0F63     /r PACKSSWB mm'mm/m64 Packs and saturate pack 4 signed words from mm and 4 signed words from mm/m64 into 8 signed bytes in mm.
  122. 0F64     /r PCMPGTB mm' mm/m64 Compare packed bytes in mm with packed bytes in mm/m64 for greater value.
  123. 0F65     /r PCMPGTW mm' mm/m64 Compare packed words in mm with packed words in mm/m64 for greater value.
  124. 0F66     /r PCMPGTD mm' mm/m64 Compare packed doublewords in mm with packed doublewords in mm/m64 for greater value.
  125. 0F67     /r PACKUSWB mm' mm/m64 Pack and saturate 4 signed words from mm and 4 signed words from mm/m64 into 8 unsigned bytes in mm.
  126. 0F68     /r PUNPCKHBW mm' mm/m64 Interleave high-order bytes from mm and mm/m64 into mm.
  127. 0F69     /r PUNPCKHWD mm' mm/m64 Interleave high-order words from mm and mm/m64 into mm.
  128. 0F6A     /r PUNPCKHDQ mm' mm/m64 Interleave high-order doublewords from mm and mm/m64 into mm.
  129. 0F6B     /r PACKSSDW mm'mm/m64 Pack and saturate 2 signed doublewords from mm and 2 signed doublewords from mm/m64 into 4 signed words in mm.
  130. 0F6E     /r MOVD mm' r/m32 Move doubleword from r/m32 to mm.
  131. 0F6F     /r MOVQ mm' mm/m64 Move quadword from mm/m64 to mm.
  132. 0F70    /r PSHUFW mmreg1; mmreg2; imm8 or PSHUFW mmreg; mem64; imm8
  133. 0F71    /6' ib PSLLW mm' imm8 Shift words in mm left by imm8' while shifting in zeros.
  134. 0F71     /4 ib PSRAW mm' imm8 Shift words in mm right by imm8 while shifting in sign bits
  135. 0F71     /2 ib PSRLW mm' imm8 Shift words in mm right by imm8.
  136. 0F72     /6 ib PSLLD mm' imm8 Shift doublewords in mm by imm8' while shifting in zeros.
  137. 0F72     /4 ib PSRAD mm' imm8 Shift doublewords in mm right by imm8 while shifting in sign bits.
  138. 0F72     /2 ib PSRLD mm' imm8 Shift doublewords in mm right by imm8.
  139. 0F73     /6 ib PSLLQ mm' imm8 Shift mm left by Imm8' while shifting in zeros.
  140. 0F73     /2 ib PSRLQ mm' imm8 Shift mm right by imm8 while shifting in zeros.
  141. 0F77     EMMS Set the FP tag word to empty.
  142. 0F7E     /r MOVD r/m32' mm Move doubleword from mm to r/m32.
  143. 0F7F     /r MOVQ mm/m64' mm Move quadword from mm to mm/m64.
  144. 0F80     cw/cd JO rel16/32 Jump near if overflow (OF=1)
  145. 0F81     cw/cd JNO rel16/32 Jump near if not overflow (OF=0)
  146. 0F82     cw/cd JB rel16/32 Jump near if below (CF=1)
  147. 0F82     cw/cd JC rel16/32 Jump near if carry (CF=1)
  148. 0F82     cw/cd JNAE rel16/32 Jump near if not above or equal (CF=1)
  149. 0F83     cw/cd JAE rel16/32 Jump near if above or equal (CF=0)
  150. 0F83     cw/cd JNB rel16/32 Jump near if not below (CF=0)
  151. 0F83     cw/cd JNC rel16/32 Jump near if not carry (CF=0)
  152. 0F84     cw/cd JE rel16/32 Jump near if equal (ZF=1)
  153. 0F84     cw/cd JZ rel16/32 Jump near if 0 (ZF=1)
  154. 0F84     cw/cd JZ rel16/32 Jump near if 0 (ZF=1)
  155. 0F85     cw/cd JNE rel16/32 Jump near if not equal (ZF=0)
  156. 0F85     cw/cd JNZ rel16/32 Jump near if not zero (ZF=0)
  157. 0F86     cw/cd JBE rel16/32 Jump near if below or equal (CF=1 or ZF=1)
  158. 0F86     cw/cd JNA rel16/32 Jump near if not above (CF=1 or ZF=1)
  159. 0F87     cw/cd JA rel16/32 Jump near if above (CF=0 and ZF=0)
  160. 0F87     cw/cd JNBE rel16/32 Jump near if not below or equal (CF=0 and ZF=0)
  161. 0F88     cw/cd JS rel16/32 Jump near if sign (SF=1)
  162. 0F89     cw/cd JNS rel16/32 Jump near if not sign (SF=0)
  163. 0F8A     cw/cd JP rel16/32 Jump near if parity (PF=1)
  164. 0F8A     cw/cd JPE rel16/32 Jump near if parity even (PF=1)
  165. 0F8B     cw/cd JNP rel16/32 Jump near if not parity (PF=0)
  166. 0F8B     cw/cd JPO rel16/32 Jump near if parity odd (PF=0)
  167. 0F8C     cw/cd JL rel16/32 Jump near if less (SF<>OF)
  168. 0F8C     cw/cd JNGE rel16/32 Jump near if not greater or equal (SF<>OF)
  169. 0F8D     cw/cd JGE rel16/32 Jump near if greater or equal (SF=OF)
  170. 0F8D     cw/cd JNL rel16/32 Jump near if not less (SF=OF)
  171. 0F8E     cw/cd JLE rel16/32 Jump near if less or equal (ZF=1 or SF<>OF)
  172. 0F8E     cw/cd JNG rel16/32 Jump near if not greater (ZF=1 or SF<>OF)
  173. 0F8F     cw/cd JG rel16/32 Jump near if greater (ZF=0 and SF=OF)
  174. 0F8F     cw/cd JNLE rel16/32 Jump near if not less or equal (ZF=0 and SF=OF)
  175. 0F90     SETO r/m8 Set byte if overflow (OF=1)
  176. 0F91     SETNO r/m8 Set byte if not overflow (OF=0)
  177. 0F92     SETB r/m8 Set byte if below (CF=1)
  178. 0F92     SETC r/m8 Set if carry (CF=1)
  179. 0F92     SETNAE r/m8 Set byte if not above or equal (CF=1)
  180. 0F93     SETAE r/m8 Set byte if above or equal (CF=0)
  181. 0F93     SETNB r/m8 Set byte if not below (CF=0)
  182. 0F93     SETNC r/m8 Set byte if not carry (CF=0)
  183. 0F94     SETE r/m8 Set byte if equal (ZF=1)
  184. 0F94     SETZ r/m8 Set byte if zero (ZF=1)
  185. 0F95     SETNE r/m8 Set byte if not equal (ZF=0)
  186. 0F95     SETNZ r/m8 Set byte if not zero (ZF=0)
  187. 0F96     SETBE r/m8 Set byte if below or equal (CF=1 or ZF=1)
  188. 0F96     SETNA r/m8 Set byte if not above (CF=1 or ZF=1)
  189. 0F97     SETA r/m8 Set byte if above (CF=0 and ZF=0)
  190. 0F97     SETNBE r/m8 Set byte if not below or equal (CF=0 and ZF=0)
  191. 0F98     SETS r/m8 Set byte if sign (SF=1)
  192. 0F99     SETNS r/m8 Set byte if not sign (SF=0)
  193. 0F9A     SETP r/m8 Set byte if parity (PF=1)
  194. 0F9A     SETPE r/m8 Set byte if parity even (PF=1)
  195. 0F9B     SETNP r/m8 Set byte if not parity (PF=0)
  196. 0F9B     SETPO r/m8 Set byte if parity odd (PF=0)
  197. 0F9C     SETL r/m8 Set byte if less (SF<>OF)
  198. 0F9C     SETNGE r/m8 Set if not greater or equal (SF<>OF)
  199. 0F9D     SETGE r/m8 Set byte if greater or equal (SF=OF)
  200. 0F9D     SETNL r/m8 Set byte if not less (SF=OF)
  201. 0F9E     SETLE r/m8 Set byte if less or equal (ZF=1 or SF<>OF)
  202. 0F9E     SETNG r/m8 Set byte if not greater (ZF=1 or SF<>OF)
  203. 0F9F     SETG r/m8 Set byte if greater (ZF=0 and SF=OF)
  204. 0F9F     SETNLE r/m8 Set byte if not less or equal (ZF=0 and SF=OF)
  205. 0FA0     PUSH FS Push FS
  206. 0FA1     POP FS Pop top of stack into FS; increment stack pointer
  207. 0FA2     CPUID
  208. 0FA3     BT r/m16'r16 Store selected bit in CF flag
  209. 0FA3     BT r/m32'r32 Store selected bit in CF flag
  210. 0FA4     SHLD r/m16'r16'imm8 Shift r/m16 to left imm8 places while shifting bits from r16 in from the right
  211. 0FA4     SHLD r/m32'r32'imm8 Shift r/m32 to left imm8 places while shifting bits from r32 in from the right
  212. 0FA5     SHLD r/m16'r16'CL Shift r/m16 to left CL places while shifting bits from r16 in from the right
  213. 0FA5     SHLD r/m32'r32'CL Shift r/m32 to left CL places while shifting bits from r32 in from the right
  214. 0FA8     PUSH GS Push GS
  215. 0FA9     POP GS Pop top of stack into GS; increment stack pointer
  216. 0FAA     RSM Resume operation of interrupted program
  217. 0FAB     BTS r/m16'r16 Store selected bit in CF flag and set
  218. 0FAB     BTS r/m32'r32 Store selected bit in CF flag and set
  219. 0FAC     SHRD r/m16'r16'imm8 Shift r/m16 to right imm8 places while shifting bits from r16 in from the left
  220. 0FAC     SHRD r/m32'r32'imm8 Shift r/m32 to right imm8 places while shifting bits from r32 in from the left
  221. 0FAD     SHRD r/m16'r16'CL Shift r/m16 to right CL places while shifting bits from r16 in from the left
  222. 0FAD    SHRD r/m32'r32'CL Shift r/m32 to right CL places while shifting bits from r32 in from the left
  223. 0FAE    /7 SFENCE
  224. 0FAF     / r IMUL r16'r/m16 word register ¼ word register * r/m word
  225. 0FAF     / r IMUL r32'r/m32 doubleword register ¼ doubleword register * r/m doubleword
  226. 0FB0    / r CMPXCHG r/m8'r8 Compare AL with r/m8. If equal' ZF is set and r8 is loaded into r/m8. Else' clear ZF and load r/m8 into AL.
  227. 0FB1    / r CMPXCHG r/m16'r16 Compare AX with r/m16. If equal' ZF is set and r16 is loaded into r/m16. Else' clear ZF and load r/m16 into AL.
  228. 0FB1    / r CMPXCHG r/m32'r32 Compare EAX with r/m32. If equal' ZF is set and r32 is loaded into r/m32. Else' clear ZF and load r/m32 into AL.
  229. 0FB2     / r LSS r16'm16:16 Load SS: r16 with far pointer from memory
  230. 0FB2     / r LSS r32'm16:32 Load SS: r32 with far pointer from memory
  231. 0FB3     BTR r/m16'r16 Store selected bit in CF flag and clear
  232. 0FB3     BTR r/m32'r32 Store selected bit in CF flag and clear
  233. 0FB4     / r LFS r16'm16:16 Load FS: r16 with far pointer from memory
  234. 0FB4     / r LFS r32'm16:32 Load FS: r32 with far pointer from memory
  235. 0FB5     / r LGS r16'm16:16 Load GS: r16 with far pointer from memory
  236. 0FB5     / r LGS r32'm16:32 Load GS: r32 with far pointer from memory
  237. 0FB6    / r MOVZX r32'r/m8 Move byte to doubleword' zero-extension
  238. 0FB6     / r MOVZX r16'r/m8 Move byte to word with zero-extension
  239. 0FB7     / r MOVZX r32'r/m16 Move word to doubleword' zero-extension
  240. 0FBA     /4 ib BT r/m16'imm8 Store selected bit in CF flag
  241. 0FBA     /4 ib BT r/m32'imm8 Store selected bit in CF flag
  242. 0FBA     /7 ib BTC r/m16'imm8 Store selected bit in CF flag and complement
  243. 0FBA     /7 ib BTC r/m32'imm8 Store selected bit in CF flag and complement
  244. 0FBA     /6 ib BTR r/m16'imm8 Store selected bit in CF flag and clear
  245. 0FBA     /6 ib BTR r/m32'imm8 Store selected bit in CF flag and clear
  246. 0FBA     /5 ib BTS r/m16'imm8 Store selected bit in CF flag and set
  247. 0FBA     /5 ib BTS r/m32'imm8 Store selected bit in CF flag and set
  248. 0FBB     BTC r/m16'r16 Store selected bit in CF flag and complement
  249. 0FBB     BTC r/m32'r32 Store selected bit in CF flag and complement
  250. 0FBC     BSF r16'r/m16 Bit scan forward on r/m16
  251. 0FBC     BSF r32'r/m32 Bit scan forward on r/m32
  252. 0FBD     BSR r16'r/m16 Bit scan reverse on r/m16
  253. 0FBD     BSR r32'r/m32 Bit scan reverse on r/m32
  254. 0FBE     / r MOVSX r16'r/m8 Move byte to word with sign-extension
  255. 0FBE     / r MOVSX r32'r/m8 Move byte to doubleword' sign-extension
  256. 0FBF     / r MOVSX r32'r/m16 Move word to doubleword' sign-extension
  257. 0FC0    /r XADD r/m8'r8 Exchange r8 and r/m8; load sum into r/m8.
  258. 0FC1    /r XADD r/m16'r16 Exchange r16 and r/m16; load sum into r/m16.
  259. 0FC1    /r XADD r/m32'r32 Exchange r32 and r/m32; load sum into r/m32.
  260. 0FC4    /r PINSRW mmreg; reg32; imm8 or PINSRW mmreg; mem16; imm8
  261. 0FC5    /r PEXTRW reg32; mmreg; imm8
  262. 0FC7     /1 m64 CMPXCHG8B m64 Compare EDX:EAX with m64. If equal' set ZF and load ECX:EBX into m64. Else' clear ZF and load m64 into EDX:EAX.
  263. 0FC8    rd BSWAP r32 Reverses the byte order of a 32-bit register.
  264. 0FD1     /r PSRLW mm' mm/m64 Shift words in mm right by amount specified in mm/m64 while shifting in zeros.
  265. 0FD2     /r PSRLD mm' mm/m64 Shift doublewords in mm right by amount specified in mm/m64 while shifting in zeros.
  266. 0FD3     /r PSRLQ mm' mm/m64 Shift mm right by amount specified in mm/m64 while shifting in zeros.
  267. 0FD5     /r PMULLW mm' mm/m64 Multiply the packed words in mm with the packed words in mm/m64' then store the low-order word of each doubleword result in mm.
  268. 0FD7    /r PMOVMSKB reg32; mmreg
  269. 0FD8     /r PSUBUSB mm' mm/m64 Subtract unsigned packed bytes in mm/m64 from unsigned packed bytes in mm and saturate.
  270. 0FD9     /r PSUBUSW mm' mm/m64 Subtract unsigned packed words in mm/m64 from unsigned packed words in mm and saturate.
  271. 0FDA    /r PMINUB mmreg1; mmreg2 or PMINUB mmreg; mem64
  272. 0FDB     /r PAND mm' mm/m64 AND quadword from mm/m64 to quadword in mm.
  273. 0FDC     /r PADDUSB mm' mm/m64 Add unsigned packed bytes from mm/m64 to unsigned packed bytes in mm and saturate.
  274. 0FDD     /r PADDUSW mm' mm/m64 Add unsigned packed words from mm/m64 to unsigned packed words in mm and saturate.
  275. 0FDE    /r PMAXUB mmreg1; mmreg2 or PMAXUB mmreg; mem64
  276. 0FDF     /r PANDN mm' mm/m64 AND quadword from mm/m64 to NOT quadword in mm.
  277. 0FE0    /r PAVGB mmreg1; mmreg2 or PAVGB mmreg; mem64
  278. 0FE1     /r PSRAW mm' mm/m64 Shift words in mm right by amount specified in mm/m64 while shifting in sign bits.
  279. 0FE2     /r PSRAD mm' mm/m64 Shift doublewords in mm right by amount specified in mm/m64 while shifting in sign bits.
  280. 0FE3    /r PAVGW mmreg1; mmreg2 or PAVGB mmreg; mem64
  281. 0FE4    /r PMULHUW mmreg1; mmreg2 or PMULHUW mmreg; mem64
  282. 0FE5     /r PMULHW mm' mm/m64 Multiply the signed packed words in mm by the signed packed words in mm/m64' then store the high-order word of each doubleword result in mm.
  283. 0FE7    /r MOVNTQ mem64; mmreg
  284. 0FE8     /r PSUBSB mm' mm/m64 Subtract signed packed bytes in mm/m64 from signed packed bytes in mm and saturate.
  285. 0FE9     /r PSUBSW mm' mm/m64 Subtract signed packed words in mm/m64 from signed packed words in mm and saturate.
  286. 0FEA    /r PMINSW mmreg1; mmreg2 or PMINSW mmreg; mem64
  287. 0FEB     /r POR mm' mm/m64 OR quadword from mm/m64 to quadword in mm.
  288. 0FEC     /r PADDSB mm' mm/m64 Add signed packed bytes from mm/m64 to signed packed bytes in mm and saturate.
  289. 0FED     /r PADDSW mm' mm/m64 Add signed packed words from mm/m64 to signed packed words in mm and saturate.
  290. 0FEE    /r PMAXSW mmreg1; mmreg2 or PMAXSW mmreg; mem64
  291. 0FEF     /r PXOR mm' mm/m64 XOR quadword from mm/m64 to quadword in mm.
  292. 0FF1     /r PSLLW mm' mm/m64 Shift words in mm left by amount specified in mm/m64' while shifting in zeros.
  293. 0FF2     /r PSLLD mm' mm/m64 Shift doublewords in mm left by amount specified in mm/m64' while shifting in zeros.
  294. 0FF3     /r PSLLQ mm' mm/m64 Shift mm left by amount specified in mm/m64' while shifting in zeros.
  295. 0FF5     /r PMADDWD mm' mm/m64 Multiply the packed words in mm by the packed words in mm/m64. Add the 32-bit pairs of results and store in mm as doubleword
  296. 0FF6    /r PSADBW mmreg1; mmreg2 or PSADBW mmreg; mem64
  297. 0FF7    /r MASKMOVQ mmreg1; mmreg2 (edi)
  298. 0FF8     /r PSUBB mm' mm/m64 Subtract packed bytes in mm/m64 from packed bytes in mm.
  299. 0FF9     /r PSUBW mm' mm/m64 Subtract packed words in mm/m64 from packed words in mm.
  300. 0FFA     /r PSUBD mm' mm/m64 Subtract packed doublewords in mm/m64 from packed doublewords in mm.
  301. 0FFC     /r PADDB mm' mm/m64 Add packed bytes from mm/m64 to packed bytes in mm.
  302. 0FFD     /r PADDW mm' mm/m64 Add packed words from mm/m64 to packed words in mm.
  303. 0FFE     /r PADDD mm' mm/m64 Add packed doublewords from mm/m64 to packed doublewords in mm.
  304. 10     / r ADC r/m8'r8 Add with carry byte register to r/m8
  305. 11     / r ADC r/m16'r16 Add with carry r16 to r/m16
  306. 11     / r ADC r/m32'r32 Add with CF r32 to r/m32
  307. 12     / r ADC r8'r/m8 Add with carry r/m8 to byte register
  308. 13     / r ADC r16'r/m16 Add with carry r/m16 to r16
  309. 13     / r ADC r32'r/m32 Add with CF r/m32 to r32
  310. 14     ib ADC AL' imm8 Add with carry imm8 to AL
  311. 15     iw ADC AX' imm16 Add with carry imm16 to AX
  312. 15     id ADC EAX' imm32 Add with carry imm32 to EAX
  313. 16     PUSH SS Push SS
  314. 17     POP SS Pop top of stack into SS; increment stack pointer
  315. 18     / r SBB r/m8'r8 Subtract with borrow r8 from r/m8
  316. 19     / r SBB r/m16'r16 Subtract with borrow r16 from r/m16
  317. 19     / r SBB r/m32'r32 Subtract with borrow r32 from r/m32
  318. 1A     / r SBB r8'r/m8 Subtract with borrow r/m8 from r8
  319. 1B     / r SBB r16'r/m16 Subtract with borrow r/m16 from r16
  320. 1B     / r SBB r32'r/m32 Subtract with borrow r/m32 from r32
  321. 1C     ib SBB AL' imm8 Subtract with borrow imm8 from AL
  322. 1D     iw SBB AX' imm16 Subtract with borrow imm16 from AX
  323. 1D     id SBB EAX' imm32 Subtract with borrow imm32 from EAX
  324. 1E     PUSH DS Push DS
  325. 1F     POP DS Pop top of stack into DS; increment stack pointer
  326. 20     /r AND r/m8'r8 r/m8 AND r8
  327. 21     / r AND r/m16'r16 r/m16 AND r16
  328. 21     / r AND r/m32'r32 r/m32 AND r32
  329. 22     / r AND r8'r/m8 r8 AND r/m8
  330. 23     / r AND r16'r/m16 r16 AND r/m16
  331. 23     / r AND r32'r/m32 r32 AND r/m32
  332. 24     ib AND AL' imm8 AL AND imm8
  333. 25     iw AND AX' imm16 AX AND i mm16
  334. 25     id AND EAX' imm32 EAX AND imm32
  335. 27     DAA Decimal adjust AL after addition
  336. 28     / r SUB r/m8'r8 Subtract r8 from r/m8
  337. 29     / r SUB r/m16'r16 Subtract r16 from r/m16
  338. 29     / r SUB r/m32'r32 Subtract r32 from r/m32
  339. 2A     / r SUB r8'r/m8 Subtract r/m8 from r8
  340. 2B     / r SUB r16'r/m16 Subtract r/m16 from r16
  341. 2B     / r SUB r32'r/m32 Subtract r/m32 from r32
  342. 2C     ib SUB AL' imm8 Subtract imm8 from AL
  343. 2D     iw SUB AX' imm16 Subtract imm16 from AX
  344. 2D     id SUB EAX' imm32 Subtract imm32 from EAX
  345. 2F     DAS Decimal adjust AL after subtraction
  346. 30     / r XOR r/m8'r8 r/m8 XOR r8
  347. 31     / r XOR r/m16'r16 r/m16 XOR r16
  348. 31     / r XOR r/m32'r32 r/m32 XOR r32
  349. 32     / r XOR r8'r/m8 r8 XOR r/m8
  350. 33     / r XOR r16'r/m16 r8 XOR r/m8
  351. 33     / r XOR r32'r/m32 r8 XOR r/m8
  352. 34     ib XOR AL' imm8 AL XOR imm8
  353. 35     iw XOR AX' imm16 AX XOR imm16
  354. 35     id XOR EAX' imm32 EAX XOR imm32
  355. 37    AAA ASCII adjust AL after addition
  356. 38     / r CMP r/m8'r8 Compare r8 with r/m8
  357. 39     / r CMP r/m16'r16 Compare r16 with r/m16
  358. 39     / r CMP r/m32'r32 Compare r32 with r/m32
  359. 3A     / r CMP r8'r/m8 Compare r/m8 with r8
  360. 3B     / r CMP r16'r/m16 Compare r/m16 with r16
  361. 3B     / r CMP r32'r/m32 Compare r/m32 with r32
  362. 3C     ib CMP AL' imm8 Compare imm8 with AL
  363. 3D     iw CMP AX' imm16 Compare imm16 with AX
  364. 3D     id CMP EAX' imm32 Compare imm32 with EAX
  365. 3F     AAS ASCII adjust AL after subtraction
  366. 40    + rw INC r16 Increment word register by 1
  367. 40    + rd INC r32 Increment doubleword register by 1
  368. 48    +rw DEC r16 Decrement r16 by 1
  369. 48    +rd DEC r32 Decrement r32 by 1
  370. 50    + rw PUSH r16 Push r16
  371. 50    + rd PUSH r32 Push r32
  372. 58    + rw POP r16 Pop top of stack into r16; increment stack pointer
  373. 58    + rd POP r32 Pop top of stack into r32; increment stack pointer
  374. 60     PUSHA Push AX' CX' DX' BX' original SP' BP' SI' and DI
  375. 60     PUSHAD Push EAX' ECX' EDX' EBX' original ESP' EBP' ESI' and EDI
  376. 61     POPA Pop DI' SI' BP' BX' DX' CX' and AX
  377. 61     POPAD Pop EDI' ESI' EBP' EBX' EDX' ECX' and EAX
  378. 62     / r BOUND r16'm16&16 Check if r16 (array index) is within bounds specified by m16&16
  379. 62     / r BOUND r32'm32&32 Check if r32 (array index) is within bounds specified by m16&16
  380. 63     / r ARPL r/m16'r16 Adjust RPL of r/m16 to not less than RPL of r16
  381. 68     PUSH imm16 Push imm16
  382. 68     PUSH imm32 Push imm32
  383. 69     / r iw IMUL r16'r/m16'imm16 word register ¼ r/m16 * immediate word
  384. 69     / r id IMUL r32'r/m32'imm32 doubleword register ¼ r/m32 * immediate doubleword
  385. 69     / r iw IMUL r16'imm16 word register ¼ r/m16 * immediate word
  386. 69     / r id IMUL r32'imm32 doubleword register ¼ r/m32 * immediate doubleword
  387. 6A     PUSH imm8 Push imm8
  388. 6B     / r ib IMUL r16'r/m16'imm8 word register ¼ r/m16 * sign-extended immediate byte
  389. 6B     / r ib IMUL r32'r/m32'imm8 doubleword register ¼ r/m32 * sign-extended immediate byte
  390. 6B     / r ib IMUL r16'imm8 word register ¼ word register * sign-extended immediate byte
  391. 6B     / r ib IMUL r32'imm8 doubleword register ¼ doubleword register * sign-extended immediate byte
  392. 6C     INS m8' DX Input byte from I/O port specified in DX into memory location specified in ES:(E)DI
  393. 6C     INSB Input byte from I/O port specified in DX into memory location specified with ES:(E)DI
  394. 6D     INS m16' DX Input word from I/O port specified in DX into memory location specified in ES:(E)DI
  395. 6D     INS m32' DX Input doubleword from I/O port specified in DX into memory location specified in ES:(E)DI
  396. 6D     INSW Input word from I/O port specified in DX into memory location specified in ES:(E)DI
  397. 6D     INSD Input doubleword from I/O port specified in DX into memory location specified in ES:(E)DI
  398. 6E     OUTS DX' m8 Output byte from memory location specified in DS:(E)SI to I/O port specified in DX
  399. 6E     OUTSB Output byte from memory location specified in DS:(E)SI to I/O port specified in DX
  400. 6F     OUTS DX' m16 Output word from memory location specified in DS:(E)SI to I/O port specified in DX
  401. 6F     OUTS DX' m32 Output doubleword from memory location specified in DS:(E)SI to I/O port specified in DX
  402. 6F     OUTSW Output word from memory location specified in DS:(E)SI to I/O port specified in DX
  403. 6F     OUTSD Output doubleword from memory location specified in DS:(E)SI to I/O port specified in DX
  404. 70     cb JO rel8 Jump short if overflow (OF=1)
  405. 71     cb JNO rel8 Jump short if not overflow (OF=0)
  406. 72     cb JB rel8 Jump short if below (CF=1)
  407. 72     cb JC rel8 Jump short if carry (CF=1)
  408. 72     cb JNAE rel8 Jump short if not above or equal (CF=1)
  409. 73     cb JAE rel8 Jump short if above or equal (CF=0)
  410. 73     cb JNB rel8 Jump short if not below (CF=0)
  411. 73     cb JNC rel8 Jump short if not carry (CF=0)
  412. 74     cb JE rel8 Jump short if equal (ZF=1)
  413. 74     cb JZ rel8 Jump short if zero (ZF = 1)
  414. 75     cb JNE rel8 Jump short if not equal (ZF=0)
  415. 75     cb JNZ rel8 Jump short if not zero (ZF=0)
  416. 76     cb JBE rel8 Jump short if below or equal (CF=1 or ZF=1)
  417. 76     cb JNA rel8 Jump short if not above (CF=1 or ZF=1)
  418. 77     cb JA rel8 Jump short if above (CF=0 and ZF=0)
  419. 77     cb JNBE rel8 Jump short if not below or equal (CF=0 and ZF=0)
  420. 78     cb JS rel8 Jump short if sign (SF=1)
  421. 79     cb JNS rel8 Jump short if not sign (SF=0)
  422. 7A     cb JP rel8 Jump short if parity (PF=1)
  423. 7A     cb JPE rel8 Jump short if parity even (PF=1)
  424. 7B     cb JNP rel8 Jump short if not parity (PF=0)
  425. 7B     cb JPO rel8 Jump short if parity odd (PF=0)
  426. 7C     cb JL rel8 Jump short if less (SF<>OF)
  427. 7C     cb JNGE rel8 Jump short if not greater or equal (SF<>OF)
  428. 7D     cb JGE rel8 Jump short if greater or equal (SF=OF)
  429. 7D     cb JNL rel8 Jump short if not less (SF=OF)
  430. 7E     cb JLE rel8 Jump short if less or equal (ZF=1 or SF<>OF)
  431. 7E     cb JNG rel8 Jump short if not greater (ZF=1 or SF<>OF)
  432. 7F     cb JG rel8 Jump short if greater (ZF=0 and SF=OF)
  433. 7F     cb JNLE rel8 Jump short if not less or equal (ZF=0 and SF=OF)
  434. 80     /2 ib ADC r/m8' imm8 Add with carry imm8 to r/m8
  435. 80     /0 ib ADD r/m8'imm8 Add imm8 to r/m8
  436. 80     /4 ib AND r/m8'imm8 r/m8 AND imm8
  437. 80     /7 ib CMP r/m8' imm8 Compare imm8 with r/m8
  438. 80     /1 ib OR r/m8'imm8 r/m8 OR imm8
  439. 80     /3 ib SBB r/m8'imm8 Subtract with borrow imm8 from r/m8
  440. 80     /5 ib SUB r/m8'imm8 Subtract imm8 from r/m8
  441. 80     /6 ib XOR r/m8'imm8 r/m8 XOR imm8
  442. 81    /7 iw CMP r/m16' imm16 Compare imm16 with r/m16
  443. 81     /2 iw ADC r/m16'imm16 Add with carry imm16 to r/m16
  444. 81     /2 id ADC r/m32'imm32 Add with CF imm32 to r/m32
  445. 81     /0 iw ADD r/m16'imm16 Add imm16 to r/m16
  446. 81     /0 id ADD r/m32'imm32 Add imm32 to r/m32
  447. 81     /4 iw AND r/m16'imm16 r/m16 AND imm16
  448. 81     /4 id AND r/m32'imm32 r/m32 AND imm32
  449. 81     /7 id CMP r/m32'imm32 Compare imm32 with r/m32
  450. 81     /1 iw OR r/m16'imm16 r/m16 OR imm16
  451. 81     /1 id OR r/m32'imm32 r/m32 OR imm32
  452. 81     /3 iw SBB r/m16'imm16 Subtract with borrow imm16 from r/m16
  453. 81     /3 id SBB r/m32'imm32 Subtract with borrow imm32 from r/m32
  454. 81     /5 iw SUB r/m16'imm16 Subtract imm16 from r/m16
  455. 81     /5 id SUB r/m32'imm32 Subtract imm32 from r/m32
  456. 81     /6 iw XOR r/m16'imm16 r/m16 XOR imm16
  457. 81     /6 id XOR r/m32'imm32 r/m32 XOR imm32
  458. 83     /2 ib ADC r/m16'imm8 Add with CF sign-extended imm8 to r/m16
  459. 83     /2 ib ADC r/m32'imm8 Add with CF sign-extended imm8 into r/m32
  460. 83     /0 ib ADD r/m16'imm8 Add sign-extended imm8 to r/m16
  461. 83     /0 ib ADD r/m32'imm8 Add sign-extended imm8 to r/m32
  462. 83     /4 ib AND r/m16'imm8 r/m16 AND imm8 (sign-extended)
  463. 83     /4 ib AND r/m32'imm8 r/m32 AND imm8 (sign-extended)
  464. 83     /7 ib CMP r/m16'imm8 Compare imm8 with r/m16
  465. 83     /7 ib CMP r/m32'imm8 Compare imm8 with r/m32
  466. 83     /1 ib OR r/m16'imm8 r/m16 OR imm8 (sign-extended)
  467. 83     /1 ib OR r/m32'imm8 r/m32 OR imm8 (sign-extended)
  468. 83     /3 ib SBB r/m16'imm8 Subtract with borrow sign-extended imm8 from r/m16
  469. 83     /3 ib SBB r/m32'imm8 Subtract with borrow sign-extended imm8 from r/m32
  470. 83     /5 ib SUB r/m16'imm8 Subtract sign-extended imm8 from r/m16
  471. 83     /5 ib SUB r/m32'imm8 Subtract sign-extended imm8 from r/m32
  472. 83     /6 ib XOR r/m16'imm8 r/m16 XOR imm8 (sign-extended)
  473. 83     /6 ib XOR r/m32'imm8 r/m32 XOR imm8 (sign-extended)
  474. 84     / r TEST r/m8'r8 AND r8 with r/m8; set SF' ZF' PF according to result
  475. 85     / r TEST r/m16'r16 AND r16 with r/m16; set SF' ZF' PF according to result
  476. 85     / r TEST r/m32'r32 AND r32 with r/m32; set SF' ZF' PF according to result
  477. 86     / r XCHG r/m8'r8 Exchange r8 (byte register) with byte from r/m8
  478. 86     / r XCHG r8'r/m8 Exchange byte from r/m8 with r8 (byte register)
  479. 87     / r XCHG r/m16'r16 Exchange r16 with word from r/m16
  480. 87     / r XCHG r16'r/m16 Exchange word from r/m16 with r16
  481. 87     / r XCHG r/m32'r32 Exchange r32 with doubleword from r/m32
  482. 87     / r XCHG r32'r/m32 Exchange doubleword from r/m32 with r32
  483. 88     / r MOV r/m8'r8 Move r8 to r/m8
  484. 89     / r MOV r/m16'r16 Move r16 to r/m16
  485. 89     / r MOV r/m32'r32 Move r32 to r/m32
  486. 8A     / r MOV r8'r/m8 Move r/m8 to r8
  487. 8B     / r MOV r16'r/m16 Move r/m16 to r16
  488. 8B     / r MOV r32'r/m32 Move r/m32 to r32
  489. 8C     / r MOV r/m16'Sreg** Move segment register to r/m16
  490. 8D    / r LEA r16'm Store effective address for m in register r16
  491. 8D     / r LEA r32'm Store effective address for m in register r32
  492. 8E     / r MOV Sreg'r/m16** Move r/m16 to segment register
  493. 8F     /0 POP m16 Pop top of stack into m16; increment stack pointer
  494. 8F     /0 POP m32 Pop top of stack into m32; increment stack pointer
  495. 90    + rw XCHG AX' r16 Exchange r16 with AX
  496. 90    + rw XCHG r16'AX Exchange AX with r16
  497. 90    + rd XCHG EAX' r32 Exchange r32 with EAX
  498. 90    + rd XCHG r32'EAX Exchange EAX with r32
  499. 90     NOP No operation
  500. 98     CBW AX ¼ sign-extend of AL
  501. 98     CWDE EAX ¼ sign-extend of AX
  502. 99     CWD DX:AX ¼ sign-extend of AX
  503. 99     CDQ EDX:EAX ¼ sign-extend of EAX
  504. 9A     cd CALL ptr16:16 Call far' absolute' address given in operand
  505. 9A     cp CALL ptr16:32 Call far' absolute' address given in operand
  506. 9B     FWAIT Check pending unmasked floating-point exceptions.
  507. 9B     WAIT Check pending unmasked floating-point exceptions.
  508. 9BD9     /7 FSTCW m2byte Store FPU control word to m2byte after checking for pending unmasked floating-point exceptions.
  509. 9BD9     /6 FSTENV m14/28byte Store FPU environment to m14byte or m28byte after checking for pending unmasked floating-point exceptions. Then mask all floating-point exceptions.
  510. 9BDBE2    FCLEX Clear floating-point exception flags after checking for pending unmasked floating-point exceptions.
  511. 9BDBE3     FINIT Initialize FPU after checking for pending unmasked floating-point exceptions.
  512. 9BDD     /6 FSAVE m94/108byte Store FPU state to m94byte or m108byte after checking for pending unmasked floating-point exceptions. Then re-initialize the FPU.
  513. 9BDD     /7 FSTSW m2byte Store FPU status word at m2byte after checking for pending unmasked floating-point exceptions.
  514. 9BDFE0     FSTSW AX Store FPU status word in AX register after checking for pending unmasked floating-point exceptions.
  515. 9C     PUSHF Push lower 16 bits of EFLAGS
  516. 9C     PUSHFD Push EFLAGS
  517. 9D     POPF Pop top of stack into lower 16 bits of EFLAGS
  518. 9D     POPFD Pop top of stack into EFLAGS
  519. 9E     SAHF 2 Loads SF' ZF' AF' PF' and CF from AH into EFLAGS register
  520. 9F     LAHF Load: AH = EFLAGS(SF:ZF:0:AF:0:PF:1:CF)
  521. A0     MOV AL' moffs8* Move byte at ( seg:offset) to AL
  522. A1     MOV AX' moffs16* Move word at ( seg:offset) to AX
  523. A1     MOV EAX' moffs32* Move doubleword at ( seg:offset) to EAX
  524. A2     MOV moffs8*'AL Move AL to ( seg:offset)
  525. A3     MOV moffs16*'AX Move AX to ( seg:offset)
  526. A3     MOV moffs32*'EAX Move EAX to ( seg:offset)
  527. A4     MOVS m8' m8 Move byte at address DS:(E)SI to address ES:(E)DI
  528. A4     MOVSB Move byte at address DS:(E)SI to address ES:(E)DI
  529. A5     MOVS m16' m16 Move word at address DS:(E)SI to address ES:(E)DI
  530. A5     MOVS m32' m32 Move doubleword at address DS:(E)SI to address ES:(E)DI
  531. A5     MOVSW Move word at address DS:(E)SI to address ES:(E)DI
  532. A5     MOVSD Move doubleword at address DS:(E)SI to address ES:(E)DI
  533. A6     CMPS m8' m8 Compares byte at address DS:(E)SI with byte at address ES:(E)DI and sets the status flags accordingly
  534. A6     CMPSB Compares byte at address DS:(E)SI with byte at address ES:(E)DI and sets the status flags accordingly
  535. A7     CMPS m16' m16 Compares word at address DS:(E)SI with word at address ES:(E)DI and sets the status flags accordingly
  536. A7     CMPS m32' m32 Compares doubleword at address DS:(E)SI with doubleword at address ES:(E)DI and sets the status flags accordingly
  537. A7     CMPSW Compares word at address DS:(E)SI with word at address ES:(E)DI and sets the status flags accordingly
  538. A7     CMPSD Compares doubleword at address DS:(E)SI with doubleword at address ES:(E)DI and sets the status flags accordingly
  539. A8     ib TEST AL' imm8 AND imm8 with AL; set SF' ZF' PF according to result
  540. A9     iw TEST AX' imm16 AND imm16 with AX; set SF' ZF' PF according to result
  541. A9     id TEST EAX' imm32 AND imm32 with EAX; set SF' ZF' PF according to result
  542. AA     STOS m8 Store AL at address ES:(E)DI
  543. AA     STOSB Store AL at address ES:(E)DI
  544. AB     STOS m16 Store AX at address ES:(E)DI
  545. AB     STOS m32 Store EAX at address ES:(E)DI
  546. AB     STOSW Store AX at address ES:(E)DI
  547. AB     STOSD Store EAX at address ES:(E)DI
  548. AC     LODS m8 Load byte at address DS:(E)SI into AL
  549. AC     LODSB Load byte at address DS:(E)SI into AL
  550. AD    LODS m16 Load word at address DS:(E)SI into AX
  551. AD     LODS m32 Load doubleword at address DS:(E)SI into EAX
  552. AD     LODSW Load word at address DS:(E)SI into AX
  553. AD     LODSD Load doubleword at address DS:(E)SI into EAX
  554. AE     SCAS m8 Compare AL with byte at ES:(E)DI and set status flags
  555. AE     SCASB Compare AL with byte at ES:(E)DI and set status flags
  556. AF     SCAS m16 Compare AX with word at ES:(E)DI and set status flags
  557. AF     SCAS m32 Compare EAX with doubleword at ES(E)DI and set status flags
  558. AF     SCASW Compare AX with word at ES:(E)DI and set status flags
  559. AF     SCASD Compare EAX with doubleword at ES:(E)DI and set status flags
  560. B0    + rb MOV r8'imm8 Move imm8 to r8
  561. B8    + rw MOV r16'imm16 Move imm16 to r16
  562. B8    + rd MOV r32'imm32 Move imm32 to r32
  563. C0     /2 ib RCL r/m8'imm8 Rotate 9 bits (CF' r/m8) left imm8 times
  564. C0     /3 ib RCR r/m8'imm8 Rotate 9 bits (CF' r/m8) right imm8 times
  565. C0     /0 ib ROL r/m8'imm8 Rotate 8 bits r/m8 left imm8 times
  566. C0     /1 ib ROR r/m8'imm8 Rotate 8 bits r/m16 right imm8 times
  567. C0     /4 ib SAL r/m8'imm8 Multiply r/m8 by 2' imm8 times
  568. C0     /7 ib SAR r/m8'imm8 Signed divide* r/m8 by 2' imm8 times
  569. C0     /4 ib SHL r/m8'imm8 Multiply r/m8 by 2' imm8 times
  570. C0     /5 ib SHR r/m8'imm8 Unsigned divide r/m8 by 2' imm8 times
  571. C1     /2 ib RCL r/m16'imm8 Rotate 17 bits (CF' r/m16) left imm8 times
  572. C1     /2 ib RCL r/m32'imm8 Rotate 33 bits (CF' r/m32) left imm8 times
  573. C1     /3 ib RCR r/m16'imm8 Rotate 17 bits (CF' r/m16) right imm8 times
  574. C1     /3 ib RCR r/m32'imm8 Rotate 33 bits (CF' r/m32) right imm8 times
  575. C1     /0 ib ROL r/m16'imm8 Rotate 16 bits r/m16 left imm8 times
  576. C1     /0 ib ROL r/m32'imm8 Rotate 32 bits r/m32 left imm8 times
  577. C1     /1 ib ROR r/m16'imm8 Rotate 16 bits r/m16 right imm8 times
  578. C1     /1 ib ROR r/m32'imm8 Rotate 32 bits r/m32 right imm8 times
  579. C1     /4 ib SAL r/m16'imm8 Multiply r/m16 by 2' imm8 times
  580. C1     /4 ib SAL r/m32'imm8 Multiply r/m32 by 2' imm8 times
  581. C1     /7 ib SAR r/m16'imm8 Signed divide* r/m16 by 2' imm8 times
  582. C1     /7 ib SAR r/m32'imm8 Signed divide* r/m32 by 2' imm8 times
  583. C1     /4 ib SHL r/m16'imm8 Multiply r/m16 by 2' imm8 times
  584. C1     /4 ib SHL r/m32'imm8 Multiply r/m32 by 2' imm8 times
  585. C1     /5 ib SHR r/m16'imm8 Unsigned divide r/m16 by 2' imm8 times
  586. C1     /5 ib SHR r/m32'imm8 Unsigned divide r/m32 by 2' imm8 times
  587. C2     iw RET imm16 Near return to calling procedure and pop imm16 bytes from stack
  588. C3     RET Near return to calling procedure
  589. C4     / r LES r16'm16:16 Load ES: r16 with far pointer from memory
  590. C4     / r LES r32'm16:32 Load ES: r32 with far pointer from memory
  591. C5     / r LDS r16'm16:16 Load DS: r16 with far pointer from memory
  592. C5     / r LDS r32'm16:32 Load DS: r32 with far pointer from memory
  593. C6     / 0 MOV r/m8'imm8 Move imm8 to r/m8
  594. C7     / 0 MOV r/m16'imm16 Move imm16 to r/m16
  595. C7     / 0 MOV r/m32'imm32 Move imm32 to r/m32
  596. C8     iw 00 ENTER imm16'0 Create a stack frame for a procedure
  597. C8     iw 01 ENTER imm16'1 Create a nested stack frame for a procedure
  598. C8     iw ib ENTER imm16'imm8 Create a nested stack frame for a procedure
  599. C9     LEAVE Set SP to BP' then pop BP
  600. C9     LEAVE Set ESP to EBP' then pop EBP
  601. CA     iw RET imm16 Far return to calling procedure and pop imm16 bytes from stack
  602. CB     RET Far return to calling procedure
  603. CC     INT 3 Interrupt 3ùtrap to debugger
  604. CD     ib INT imm8 Interrupt vector number specified by immediate byte
  605. CE     INTO Interrupt 4ùif overflow flag is 1
  606. CF     IRET Interrupt return (16-bit operand size)
  607. CF     IRETD Interrupt return (32-bit operand size)
  608. D0     /2 RCL r/m8'1 Rotate 9 bits (CF' r/m8) left once
  609. D0     /3 RCR r/m8'1 Rotate 9 bits (CF' r/m8) right once
  610. D0     /0 ROL r/m8'1 Rotate 8 bits r/m8 left once
  611. D0     /1 ROR r/m8'1 Rotate 8 bits r/m8 right once
  612. D0     /4 SAL r/m8'1 Multiply r/m8 by 2' once
  613. D0     /7 SAR r/m8'1 Signed divide* r/m8 by 2' once
  614. D0     /4 SHL r/m8'1 Multiply r/m8 by 2' once
  615. D0     /5 SHR r/m8'1 Unsigned divide r/m8 by 2' once
  616. D1     /2 RCL r/m16'1 Rotate 17 bits (CF' r/m16) left once
  617. D1     /2 RCL r/m32'1 Rotate 33 bits (CF' r/m32) left once
  618. D1     /3 RCR r/m16'1 Rotate 17 bits (CF' r/m16) right once
  619. D1     /3 RCR r/m32'1 Rotate 33 bits (CF' r/m32) right once
  620. D1     /0 ROL r/m16'1 Rotate 16 bits r/m16 left once
  621. D1     /0 ROL r/m32'1 Rotate 32 bits r/m32 left once
  622. D1     /1 ROR r/m16'1 Rotate 16 bits r/m16 right once
  623. D1     /1 ROR r/m32'1 Rotate 32 bits r/m32 right once
  624. D1     /4 SAL r/m16'1 Multiply r/m16 by 2' once
  625. D1     /4 SAL r/m32'1 Multiply r/m32 by 2' once
  626. D1     /7 SAR r/m16'1 Signed divide* r/m16 by 2' once
  627. D1     /7 SAR r/m32'1 Signed divide* r/m32 by 2' once
  628. D1     /4 SHL r/m16'1 Multiply r/m16 by 2' once
  629. D1     /4 SHL r/m32'1 Multiply r/m32 by 2' once
  630. D1     /5 SHR r/m16'1 Unsigned divide r/m16 by 2' once
  631. D1     /5 SHR r/m32'1 Unsigned divide r/m32 by 2' once
  632. D2     /2 RCL r/m8'CL Rotate 9 bits (CF' r/m8) left CL times
  633. D2     /3 RCR r/m8'CL Rotate 9 bits (CF' r/m8) right CL times
  634. D2     /0 ROL r/m8'CL Rotate 8 bits r/m8 left CL times
  635. D2     /1 ROR r/m8'CL Rotate 8 bits r/m8 right CL times
  636. D2     /4 SAL r/m8'CL Multiply r/m8 by 2' CL times
  637. D2     /7 SAR r/m8'CL Signed divide* r/m8 by 2' CL times
  638. D2     /4 SHL r/m8'CL Multiply r/m8 by 2' CL times
  639. D2     /5 SHR r/m8'CL Unsigned divide r/m8 by 2' CL times
  640. D3    /2 RCL r/m16'CL Rotate 17 bits (CF' r/m16) left CL times
  641. D3     /2 RCL r/m32'CL Rotate 33 bits (CF' r/m32) left CL times
  642. D3     /3 RCR r/m16'CL Rotate 17 bits (CF' r/m16) right CL times
  643. D3     /3 RCR r/m32'CL Rotate 33 bits (CF' r/m32) right CL times
  644. D3     /0 ROL r/m16'CL Rotate 16 bits r/m16 left CL times
  645. D3     /0 ROL r/m32'CL Rotate 32 bits r/m32 left CL times
  646. D3     /1 ROR r/m16'CL Rotate 16 bits r/m16 right CL times
  647. D3     /1 ROR r/m32'CL Rotate 32 bits r/m32 right CL times
  648. D3     /4 SAL r/m16'CL Multiply r/m16 by 2' CL times
  649. D3     /4 SAL r/m32'CL Multiply r/m32 by 2' CL times
  650. D3     /7 SAR r/m16'CL Signed divide* r/m16 by 2' CL times
  651. D3     /7 SAR r/m32'CL Signed divide* r/m32 by 2' CL times
  652. D3     /4 SHL r/m16'CL Multiply r/m16 by 2' CL times
  653. D3     /4 SHL r/m32'CL Multiply r/m32 by 2' CL times
  654. D3     /5 SHR r/m16'CL Unsigned divide r/m16 by 2' CL times
  655. D3     /5 SHR r/m32'CL Unsigned divide r/m32 by 2' CL times
  656. D4     ib (No mnemonic) Adjust AX after multiply to number base imm8
  657. D40A     AAM ASCII adjust AX after multiply
  658. D5     ib (No mnemonic) Adjust AX before division to number base imm8
  659. D50A     AAD ASCII adjust AX before division
  660. D7     XLAT m8 Set AL to memory byte DS:[(E)BX + unsigned AL]
  661. D7     XLATB Set AL to memory byte DS:[(E)BX + unsigned AL]
  662. D8    /1 FMUL m32real Multiply ST(0) by m32real and store result in ST(0)
  663. D8     /0 FADD m32 real Add m32real to ST(0) and store result in ST(0)
  664. D8     /2 FCOM m32real Compare ST(0) with m32real.
  665. D8     /3 FCOMP m32real Compare ST(0) with m32real and pop register stack.
  666. D8     /6 FDIV m32real Divide ST(0) by m32real and store result in ST(0)
  667. D8     /7 FDIVR m32real Divide m32real by ST(0) and store result in ST(0)
  668. D8     /5 FSUBR m32real Subtract ST(0) from m32real and store result in ST(0)
  669. D8/4     FSUB m32real Subtract m32real from ST(0) and store result in ST(0)
  670. D8C0    +i FADD ST(0)' ST(i) Add ST(0) to ST(i) and store result in ST(0)
  671. D8C8    +i FMUL ST(0)' ST(i) Multiply ST(0) by ST(i) and store result in ST(0)
  672. D8D0    +i FCOM ST(i) Compare ST(0) with ST(i).
  673. D8D1     FCOM Compare ST(0) with ST(1).
  674. D8D8    +i FCOMP ST(i) Compare ST(0) with ST(i) and pop register stack.
  675. D8D9     FCOMP Compare ST(0) with ST(1) and pop register stack.
  676. D8E0    +i FSUB ST(0)' ST(i) Subtract ST(i) from ST(0) and store result in ST(0)
  677. D8E8    +i FSUBR ST(0)' ST(i) Subtract ST(0) from ST(i) and store result in ST(0)
  678. D8F0    +i FDIV ST(0)' ST(i) Divide ST(0) by ST(i) and store result in ST(0)
  679. D8F8    +i FDIVR ST(0)' ST(i) Divide ST(i) by ST(0) and store result in ST(0)
  680. D9    /5 FLDCW m2byte Load FPU control word from m2byte.
  681. D9    /4 FLDENV m14/28byte Load FPU environment from m14byte or m28byte.
  682. D9     /0 FLD m32real Push m32real onto the FPU register stack.
  683. D9     /2 FST m32real Copy ST(0) to m32real
  684. D9     /3 FSTP m32real Copy ST(0) to m32real and pop register stack
  685. D9     /7 FNSTCW m2byte Store FPU control word to m2byte without checking for pending unmasked floating-point exceptions.
  686. D9     /6 FNSTENV m14/28byte Store FPU environment to m14byte or m28byte without checking for pending unmasked floating-point exceptions. Then mask all floating-point exceptions.
  687. D9C0    +i FLD ST(i) Push ST(i) onto the FPU register stack.
  688. D9C8    +i FXCH ST(i) Exchange the contents of ST(0) and ST(i)
  689. D9C9     FXCH Exchange the contents of ST(0) and ST(1)
  690. D9D0     FNOP No operation is performed.
  691. D9E0     FCHS Complements sign of ST(0)
  692. D9E1     FABS Replace ST with its absolute value.
  693. D9E4     FTST Compare ST(0) with 0.0.
  694. D9E5     FXAM Classify value or number in ST(0)
  695. D9E8     FLD1 Push +1.0 onto the FPU register stack.
  696. D9E9     FLDL2T Push log 2 10 onto the FPU register stack.
  697. D9EA     FLDL2E Push log 2 e onto the FPU register stack.
  698. D9EB     FLDPI Push p onto the FPU register stack.
  699. D9EC     FLDLG2 Push log 10 2 onto the FPU register stack.
  700. D9ED     FLDLN2 Push log e 2 onto the FPU register stack.
  701. D9EE     FLDZ Push +0.0 onto the FPU register stack.
  702. D9F0     F2XM1 Replace ST(0) with (2^ST(0) û 1)
  703. D9F1     FYL2X Replace ST(1) with (ST(1) * log{2}ST(0)) and pop the register stack
  704. D9F2     FPTAN 17-173 Replace ST(0) with its tangent and push 1 onto the FPU stack.
  705. D9F3     FPATAN Replace ST(1) with arctan(ST(1)/ST(0)) and pop the register stack
  706. D9F4     FXTRACT Separate value in ST(0) into exponent and significand' store exponent in ST(0)' and push the significand onto the register stack.
  707. D9F5     FPREM1 Replace ST(0) with the IEEE remainder obtained from dividing ST(0) by ST(1)
  708. D9F6     FDECSTP Decrement TOP field in FPU status word.
  709. D9F7    FINCSTP Increment the TOP field in the FPU status register
  710. D9F8     FPREM Replace ST(0) with the remainder obtained from
  711. D9F9     FYL2XP1 Replace ST(1) with ST(1) * log{2}(ST(0) + 1.0) and pop the register stack
  712. D9FA     FSQRT Calculates square root of ST(0) and stores the result in ST(0)
  713. D9FB     FSINCOS Compute the sine and cosine of ST(0); replace ST(0) with the sine' and push the cosine onto the register stack.
  714. D9FC     FRNDINT Round ST(0) to an integer.
  715. D9FD     FSCALE Scale ST(0) by ST(1).
  716. D9FE     FSIN Replace ST(0) with its sine.
  717. D9FF     FCOS Replace ST(0) with its cosine
  718. DA    /1 FIMUL m32int Multiply ST(0) by m32int and store result in ST(0)
  719. DA     /0 FIADD m32int Add m32int to ST(0) and store result in ST(0)
  720. DA     /6 FIDIV m32int Divide ST(0) by m32int and store result in ST(0)
  721. DA     /7 FIDIVR m32int Divide m32int by ST(0) and store result in ST(0)
  722. DA     /2 FICOM m32int Compare ST(0) with m32int
  723. DA     /3 FICOMP m32int Compare ST(0) with m32int and pop stack register
  724. DA     /4 FISUB m32int Subtract m32int from ST(0) and store result in ST(0)
  725. DA     /5 FISUBR m32int Subtract ST(0) from m32int and store result in ST(0)
  726. DAC0    +i FCMOVB ST(0)' ST(i) Move if below (CF=1)
  727. DAC8    +i FCMOVE ST(0)' ST(i) Move if equal (ZF=1)
  728. DAD0    +i FCMOVBE ST(0)' ST(i) Move if below or equal (CF=1 or ZF=1)
  729. DAD8    +i FCMOVU ST(0)' ST(i) Move if unordered (PF=1)
  730. DAE9     FUCOMPP Compare ST(0) with ST(1) and pop register stack twice
  731. DB     /0 FILD m32int Push m32int onto the FPU register stack.
  732. DB     /2 FIST m32int Store ST(0) in m32int
  733. DB     /3 FISTP m32int Store ST(0) in m32int and pop register stack
  734. DB     /5 FLD m80real Push m80real onto the FPU register stack.
  735. DB     /7 FSTP m80real Copy ST(0) to m80real and pop register stack
  736. DBC0    +i FCMOVNB ST(0)' ST(i) Move if not below (CF=0)
  737. DBC8    +i FCMOVNE ST(0)' ST(i) Move if not equal (ZF=0)
  738. DBD0    +i FCMOVNBE ST(0)' ST(i) Move if not below or equal (CF=0 and ZF=0)
  739. DBD8    +i FCMOVNU ST(0)' ST(i) Move if not unordered (PF=0)
  740. DBE2    FNCLEX Clear floating-point exception flags without checking for pending unmasked floating-point exceptions.
  741. DBE3     FNINIT Initialize FPU without checking for pending unmasked floating-point exceptions.
  742. DBE8    +i FUCOMI ST' ST(i) Compare ST(0) with ST(i)' check for ordered values' and set status flags accordingly
  743. DBF0    +i FCOMI ST' ST(i) Compare ST(0) with ST(i) and set status flags accordingly
  744. DC    /1 FMUL m64real Multiply ST(0) by m64real and store result in ST(0)
  745. DC     /0 FADD m64real Add m64real to ST(0) and store result in ST(0)
  746. DC     /2 FCOM m64real Compare ST(0) with m64real.
  747. DC     /3 FCOMP m64real Compare ST(0) with m64real and pop register stack.
  748. DC     /6 FDIV m64real Divide ST(0) by m64real and store result in ST(0)
  749. DC     /7 FDIVR m64real Divide m64real by ST(0) and store result in ST(0)
  750. DC     /5 FSUBR m64real Subtract ST(0) from m64real and store result in ST(0)
  751. DC/4     FSUB m64real Subtract m64real from ST(0) and store result in ST(0)
  752. DCC0    +i FADD ST(i)' ST(0) Add ST(i) to ST(0) and store result in ST(i)
  753. DCC8    +i FMUL ST(i)' ST(0) Multiply ST(i) by ST(0) and store result in ST(i)
  754. DCE0    +i FSUBR ST(i)' ST(0) Subtract ST(i) from ST(0) and store result in ST(i)
  755. DCE8    +i FSUB ST(i)' ST(0) Subtract ST(0) from ST(i) and store result in ST(i)
  756. DCF0    +i FDIVR ST(i)' ST(0) Divide ST(0) by ST(i) and store result in ST(i)
  757. DCF8    +i FDIV ST(i)' ST(0) Divide ST(i) by ST(0) and store result in ST(i)
  758. DD    /7 FNSTSW m2byte Store FPU status word at m2byte without checking for pending unmasked floating-point exceptions.
  759. DD     /0 FLD m64real Push m64real onto the FPU register stack.
  760. DD     /4 FRSTOR m94/108byte Load FPU state from m94byte or m108byte.
  761. DD     /6 FNSAVE* m94/108byte Store FPU environment to m94byte or m108byte without checking for pending unmasked floating-point exceptions. Then re-initialize the FPU.
  762. DD     /2 FST m64real Copy ST(0) to m64real
  763. DD     /3 FSTP m64real Copy ST(0) to m64real and pop register stack
  764. DDC0    +i FFREE ST(i) Sets tag for ST(i) to empty
  765. DDD0    +i FST ST(i) Copy ST(0) to ST(i)
  766. DDD8    +i FSTP ST(i) Copy ST(0) to ST(i) and pop register stack
  767. DDE0    +i FUCOM ST(i) Compare ST(0) with ST(i)
  768. DDE1     FUCOM Compare ST(0) with ST(1)
  769. DDE8    +i FUCOMP ST(i) Compare ST(0) with ST(i) and pop register stack
  770. DDE9     FUCOMP Compare ST(0) with ST(1) and pop register stack
  771. DE     C1 FADDP Add ST(0) to ST(1)' store result in ST(1)' and pop the register stack
  772. DE     /0 FIADD m16int Add m16int to ST(0) and store result in ST(0)
  773. DE     /6 FIDIV m16int Divide ST(0) by m64int and store result in ST(0)
  774. DE     /7 FIDIVR m16int Divide m64int by ST(0) and store result in ST(0)
  775. DE     /2 FICOM m16int Compare ST(0) with m16int
  776. DE     /3 FICOMP m16int Compare ST(0) with m16int and pop stack register
  777. DE     /1 FIMUL m16int Multiply ST(0) by m16int and store result in ST(0)
  778. DE     /4 FISUB m16int Subtract m16int from ST(0) and store result in ST(0)
  779. DE     /5 FISUBR m16int Subtract ST(0) from m16int and store result in ST(0)
  780. DEC0    +i FADDP ST(i)' ST(0) Add ST(0) to ST(i)' store result in ST(i)' and pop the register stack
  781. DEC8    +i FMULP ST(i)' ST(0) Multiply ST(i) by ST(0)' store result in ST(i)' and pop the register stack
  782. DEC9     FMULP Multiply ST(1) by ST(0)' store result in ST(1)' and pop the register stack
  783. DED9     FCOMPP Compare ST(0) with ST(1) and pop register stack twice.
  784. DEE0    +i FSUBRP ST(i)' ST(0) Subtract ST(i) from ST(0)' store result in ST(i)' and pop register stack
  785. DEE1     FSUBRP Subtract ST(1) from ST(0)' store result in ST(1)' and pop register stack
  786. DEE8    +i FSUBP ST(i)' ST(0) Subtract ST(0) from ST(i)' store result in ST(i)' and pop register stack
  787. DEE9     FSUBP Subtract ST(0) from ST(1)' store result in ST(1)' and pop register stack
  788. DEF0    +i FDIVRP ST(i)' ST(0) Divide ST(0) by ST(i)' store result in ST(i)' and pop the register stack
  789. DEF1     FDIVRP Divide ST(0) by ST(1)' store result in ST(1)' and pop the register stack
  790. DEF8    +i FDIVP ST(i)' ST(0) Divide ST(i) by ST(0)' store result in ST(i)' and pop the register stack
  791. DEF9     FDIVP Divide ST(1) by ST(0)' store result in ST(1)' and pop the register stack
  792. DF     /4 FBLD m80 dec Convert BCD value to real and push onto the FPU stack.
  793. DF     /6 FBSTP m80bcd Store ST(0) in m80bcd and pop ST(0).
  794. DF     /0 FILD m16int Push m16int onto the FPU register stack.
  795. DF     /5 FILD m64int Push m64int onto the FPU register stack.
  796. DF     /2 FIST m16int Store ST(0) in m16int
  797. DF     /3 FISTP m16int Store ST(0) in m16int and pop register stack
  798. DF     /7 FISTP m64int Store ST(0) in m64int and pop register stack
  799. DFE0     FNSTSW AX Store FPU status word in AX register without checking for pending unmasked floating-point exceptions.
  800. DFE8    +i FUCOMIP ST' ST(i) Compare ST(0) with ST(i)' check for ordered values' set status flags accordingly' and pop register stack
  801. DFF0    +i FCOMIP ST' ST(i) Compare ST(0) with ST(i)' set status flags accordingly' and pop register stack
  802. E0     cb LOOPNE rel8 Decrement count; jump short if count ╣ 0 and ZF=0
  803. E0     cb LOOPNZ rel8 Decrement count; jump short if count ╣ 0 and ZF=0
  804. E1     cb LOOPE rel8 Decrement count; jump short if count ╣ 0 and ZF=1
  805. E1     cb LOOPZ rel8 Decrement count; jump short if count ╣ 0 and ZF=1
  806. E2     cb LOOP rel8 Decrement count; jump short if count ╣ 0
  807. E3     cb JCXZ rel8 Jump short if CX register is 0
  808. E3     cb JECXZ rel8 Jump short if ECX register is 0
  809. E4     ib IN AL' imm8 Input byte from imm8 I/O port address into AL
  810. E5     ib IN AX' imm8 Input byte from imm8 I/O port address into AX
  811. E5     ib IN EAX' imm8 Input byte from imm8 I/O port address into EAX
  812. E6     ib OUT imm8' AL Output byte in AL to I/O port address imm8
  813. E7     ib OUT imm8' AX Output word in AX to I/O port address imm8
  814. E7     ib OUT imm8' EAX Output doubleword in EAX to I/O port address imm8
  815. E8     cw CALL rel16 Call near' relative' displacement relative to next instruction
  816. E8     cd CALL rel32 Call near' relative' displacement relative to next instruction
  817. E9     cw JMP rel16 Jump near' relative' displacement relative to next instruction
  818. E9     cd JMP rel32 Jump near' relative' displacement relative to next instruction
  819. EA     cd JMP ptr16:16 Jump far' absolute' address given in operand
  820. EA     cp JMP ptr16:32 Jump far' absolute' address given in operand
  821. EB     cb JMP rel8 Jump short' relative' displacement relative to next instruction
  822. EC     IN AL'DX Input byte from I/O port in DX into AL
  823. ED     IN AX'DX Input word from I/O port in DX into AX
  824. ED     IN EAX'DX Input doubleword from I/O port in DX into EAX
  825. EE     OUT DX' AL Output byte in AL to I/O port address in DX
  826. EF     OUT DX' AX Output word in AX to I/O port address in DX
  827. EF     OUT DX' EAX Output doubleword in EAX to I/O port address in DX
  828. F0     LOCK Asserts LOCK# signal for duration of the accompanying instruction
  829. F2A6     REPNE CMPS m8'm8 Find matching bytes in ES:[(E)DI] and DS:[(E)SI]
  830. F2A7     REPNE CMPS m16'm16 Find matching words in ES:[(E)DI] and DS:[(E)SI]
  831. F2A7     REPNE CMPS m32'm32 Find matching doublewords in ES:[(E)DI] and DS:[(E)SI]
  832. F2AE     REPNE SCAS m8 Find AL' starting at ES:[(E)DI]
  833. F2AF     REPNE SCAS m16 Find AX' starting at ES:[(E)DI]
  834. F2AF     REPNE SCAS m32 Find EAX' starting at ES:[(E)DI]
  835. F36C     REP INS r/m8' DX Input (E)CX bytes from port DX into ES:[(E)DI]
  836. F36D     REP INS r/m16'DX Input (E)CX words from port DX into ES:[(E)DI]
  837. F36D     REP INS r/m32'DX Input (E)CX doublewords from port DX into ES:[(E)DI]
  838. F36E     REP OUTS DX' r/m8 Output (E)CX bytes from DS:[(E)SI] to port DX
  839. F36F     REP OUTS DX' r/m16 Output (E)CX words from DS:[(E)SI] to port DX
  840. F36F     REP OUTS DX' r/m32 Output (E)CX doublewords from DS:[(E)SI] to port DX
  841. F3A4     REP MOVS m8'm8 Move (E)CX bytes from DS:[(E)SI] to ES:[(E)DI]
  842. F3A5     REP MOVS m16'm16 Move (E)CX words from DS:[(E)SI] to ES:[(E)DI]
  843. F3A5     REP MOVS m32'm32 Move (E)CX doublewords from DS:[(E)SI] to ES:[(E)DI]
  844. F3A6     REPE CMPS m8'm8 Find nonmatching bytes in ES:[(E)DI] and DS:[(E)SI]
  845. F3A7     REPE CMPS m16'm16 Find nonmatching words in ES:[(E)DI] and DS:[(E)SI]
  846. F3A7     REPE CMPS m32'm32 Find nonmatching doublewords in ES:[(E)DI] and DS:[(E)SI]
  847. F3AA     REP STOS m8 Fill (E)CX bytes at ES:[(E)DI] with AL
  848. F3AB     REP STOS m16 Fill (E)CX words at ES:[(E)DI] with AX
  849. F3AB     REP STOS m32 Fill (E)CX doublewords at ES:[(E)DI] with EAX
  850. F3AC     REP LODS AL Load (E)CX bytes from DS:[(E)SI] to AL
  851. F3AD     REP LODS AX Load (E)CX words from DS:[(E)SI] to AX
  852. F3AD     REP LODS EAX Load (E)CX doublewords from DS:[(E)SI] to EAX
  853. F3AE     REPE SCAS m8 Find non-AL byte starting at ES:[(E)DI]
  854. F3AF     REPE SCAS m16 Find non-AX word starting at ES:[(E)DI]
  855. F3AF     REPE SCAS m32 Find non-EAX doubleword starting at ES:[(E)DI]
  856. F4     HLT Halt
  857. F5     CMC Complement CF flag
  858. F6     /6 DIV r/m8 Unsigned divide AX by r/m8; AL ¼ Quotient' AH ¼ Remainder
  859. F6     /7 IDIV r/m8 Signed divide AX (where AH must contain sign-extension of AL) by r/m byte. (Results: AL=Quotient' AH=Remainder)
  860. F6     /5 IMUL r/m8 AX¼ AL * r/m byte
  861. F6     /4 MUL r/m8 Unsigned multiply (AX ¼ AL * r/m8)
  862. F6     /3 NEG r/m8 Two's complement negate r/m8
  863. F6     /2 NOT r/m8 Reverse each bit of r/m8
  864. F6     /0 ib TEST r/m8'imm8 AND imm8 with r/m8; set SF' ZF' PF according to result
  865. F7     /6 DIV r/m16 Unsigned divide DX:AX by r/m16; AX ¼ Quotient' DX ¼ Remainder
  866. F7     /6 DIV r/m32 Unsigned divide EDX:EAX by r/m32 doubleword; EAX ¼ Quotient' EDX ¼ Remainder
  867. F7     /7 IDIV r/m16 Signed divide DX:AX (where DX must contain sign-extension of AX) by r/m word. (Results: AX=Quotient' DX=Remainder)
  868. F7     /7 IDIV r/m32 Signed divide EDX:EAX (where EDX must contain sign-extension of EAX) by r/m doubleword. (Results: EAX=Quotient' EDX=Remainder)
  869. F7     /5 IMUL r/m16 DX:AX ¼ AX * r/m word
  870. F7     /5 IMUL r/m32 EDX:EAX ¼ EAX * r/m doubleword
  871. F7     /4 MUL r/m16 Unsigned multiply (DX:AX ¼ AX * r/m16)
  872. F7     /4 MUL r/m32 Unsigned multiply (EDX:EAX ¼ EAX * r/m32)
  873. F7     /3 NEG r/m16 Two's complement negate r/m16
  874. F7     /3 NEG r/m32 Two's complement negate r/m32
  875. F7     /2 NOT r/m16 Reverse each bit of r/m16
  876. F7     /2 NOT r/m32 Reverse each bit of r/m32
  877. F7     /0 iw TEST r/m16'imm16 AND imm16 with r/m16; set SF' ZF' PF according to result
  878. F7     /0 id TEST r/m32'imm32 AND imm32 with r/m32; set SF' ZF' PF according to result
  879. F8     CLC Clear CF flag
  880. F9     STC Set CF flag
  881. FA     CLI Clear interrupt flag; interrupts disabled when interrupt flag cleared
  882. FB     STI Set interrupt flag; external' maskable interrupts enabled
  883. FC     CLD Clear DF flag
  884. FD     STD Set DF flag
  885. FE     /1 DEC r/m8 Decrement r/m8 by 1
  886. FE     /0 INC r/m8 Increment r/m byte by 1
  887. FF     /2 CALL r/m16 Call near' absolute indirect' address given in r/m16
  888. FF     /2 CALL r/m32 Call near' absolute indirect' address given in r/m32
  889. FF     /3 CALL m16:16 Call far' absolute indirect' address given in m16:16
  890. FF     /3 CALL m16:32 Call far' absolute indirect' address given in m16:32
  891. FF     /1 DEC r/m16 Decrement r/m16 by 1
  892. FF     /1 DEC r/m32 Decrement r/m32 by 1
  893. FF     /0 INC r/m16 Increment r/m word by 1
  894. FF     /0 INC r/m32 Increment r/m doubleword by 1
  895. FF     /4 JMP r/m16 Jump near' absolute indirect' address given in r/m16
  896. FF     /4 JMP r/m32 Jump near' absolute indirect' address given in r/m32
  897. FF     /5 JMP m16:16 Jump far' absolute indirect' address given in m16:16
  898. FF     /5 JMP m16:32 Jump far' absolute indirect' address given in m16:32
  899. FF     /6 PUSH r/m16 Push r/m16
  900. FF     /6 PUSH r/m32 Push r/m32
  901.