home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 December / PCWorld_2001-12_cd.bin / Software / Topware / Hackman / _SETUP.1 / ModuleX.dat < prev    next >
Text File  |  1998-09-14  |  9KB  |  169 lines

  1. <XADD>
  2. [1]
  3. "XADD: Exchange and Add"
  4. ""
  5. "Exchanges the first operand (destination operand) with the second operand (source operand), then loads the sum of the two values into the destination operand. The destination operand can be a register or a memory location; the source operand is a register. This instruction can be used with a LOCK prefix."
  6. ""
  7. "Intel Architecture Compatibility"
  8. ""
  9. "Intel Architecture processors earlier than the Intel486 processor do not recognize this instruction. If this instruction is used, you should provide an equivalent code sequence that runs on earlier processors."
  10. [2]
  11. "TEMP ¼ SRC + DEST"
  12. "SRC ¼ DEST"
  13. "DEST ¼ TEMP"
  14. [3]
  15. "The CF, PF, AF, SF, ZF, and OF flags are set according to the result of the addition, which is stored in the destination operand."
  16. [4]
  17. "Protected Mode Exceptions"
  18. ""
  19. "#GP(0) If the destination is located in a nonwritable segment. If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. If the DS, ES, FS, or GS register contains a null segment selector."
  20. "#SS(0) If a memory operand effective address is outside the SS segment limit."
  21. "#PF(fault-code) If a page fault occurs."
  22. "#AC(0) If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3."
  23. ""
  24. "Real-Address Mode Exceptions"
  25. ""
  26. "#GP If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit."
  27. "#SS If a memory operand effective address is outside the SS segment limit."
  28. ""
  29. "Virtual-8086 Mode Exceptions"
  30. ""
  31. "#GP(0) If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit."
  32. "#SS(0) If a memory operand effective address is outside the SS segment limit."
  33. "#PF(fault-code) If a page fault occurs."
  34. "#AC(0) If alignment checking is enabled and an unaligned memory reference is made."
  35. [5]
  36. "0F C0/r XADD r/m8,r8 Exchange r8 and r/m8; load sum into r/m8."
  37. "0F C1/r XADD r/m16,r16 Exchange r16 and r/m16; load sum into r/m16."
  38. "0F C1/r XADD r/m32,r32 Exchange r32 and r/m32; load sum into r/m32."
  39. [6]
  40. </XADD>
  41. <XCHG>
  42. [1]
  43. "XCHG: Exchange Register/Memory with Register"
  44. ""
  45. "Exchanges the contents of the destination (first) and source (second) operands. The operands can be two general-purpose registers or a register and a memory location. If a memory operand is referenced, the processorÆs locking protocol is automatically implemented for the duration of the exchange operation, regardless of the presence or absence of the LOCK prefix or of the value of the IOPL."
  46. "This instruction is useful for implementing semaphores or similar data structures for process synchronization. The XCHG instruction can also be used instead of the BSWAP instruction for 16-bit operands."
  47. [2]
  48. "TEMP ¼ DEST"
  49. "DEST ¼ SRC"
  50. "SRC ¼ TEMP"
  51. [3]
  52. "None."
  53. [4]
  54. "Protected Mode Exceptions"
  55. ""
  56. "#GP(0) If either operand is in a nonwritable segment. If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. If the DS, ES, FS, or GS register contains a null segment selector."
  57. "#SS(0) If a memory operand effective address is outside the SS segment limit."
  58. "#PF(fault-code) If a page fault occurs."
  59. "#AC(0) If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3."
  60. ""
  61. "Real-Address Mode Exceptions"
  62. ""
  63. "#GP If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit."
  64. "#SS If a memory operand effective address is outside the SS segment limit."
  65. ""
  66. "Virtual-8086 Mode Exceptions"
  67. ""
  68. "#GP(0) If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit."
  69. "#SS(0) If a memory operand effective address is outside the SS segment limit."
  70. "#PF(fault-code) If a page fault occurs."
  71. "#AC(0) If alignment checking is enabled and an unaligned memory reference is made."
  72. [5]
  73. "90+ rw XCHG AX, r16 Exchange r16 with AX"
  74. "90+ rw XCHG r16,AX Exchange AX with r16"
  75. "90+ rd XCHG EAX, r32 Exchange r32 with EAX"
  76. "90+ rd XCHG r32,EAX Exchange EAX with r32"
  77. "86 / r XCHG r/m8,r8 Exchange r8 (byte register) with byte from r/m8"
  78. "86 / r XCHG r8,r/m8 Exchange byte from r/m8 with r8 (byte register)"
  79. "87 / r XCHG r/m16,r16 Exchange r16 with word from r/m16"
  80. "87 / r XCHG r16,r/m16 Exchange word from r/m16 with r16"
  81. "87 / r XCHG r/m32,r32 Exchange r32 with doubleword from r/m32"
  82. "87 / r XCHG r32,r/m32 Exchange doubleword from r/m32 with r32"
  83. [6]
  84. </XCHG>
  85. <XLAT>
  86. <XLATB>
  87. [1]
  88. "XLAT/XLATB: Table Look-up Translation"
  89. ""
  90. "Locates a byte entry in a table in memory, using the contents of the AL register as a table index, then copies the contents of the table entry back into the AL register. The index in the AL register is treated as an unsigned integer. The XLAT and XLATB instructions get the base address of the table in memory from either the DS:EBX or the DS:BX registers (depending on the address-size attribute of the instruction, 32 or 16, respectively). (The DS segment may be overridden with a segment override prefix.)"
  91. "At the assembly-code level, two forms of this instruction are allowed: the ôexplicit-operandö form and the ôno-operandö form. The explicit-operand form (specified with the XLAT mnemonic) allows the base address of the table to be specified explicitly with a symbol. This explicit-operands form is provided to allow documentation; however, note that the documentation provided by this form can be misleading. That is, the symbol does not have to specify the correct base address. The base address is always specified by the DS:(E)BX registers, which must be loaded correctly before the XLAT instruction is executed."
  92. "The no-operands form (XLATB) provides a ôshort formö of the XLAT instructions. Here also the processor assumes that the DS:(E)BX registers contain the base address of the table."
  93. [2]
  94. "IF AddressSize = 16"
  95. "THEN"
  96. "AL ¼ (DS:BX + ZeroExtend(AL))"
  97. "ELSE (* AddressSize = 32 *)"
  98. "AL ¼ (DS:EBX + ZeroExtend(AL));"
  99. "FI;"
  100. [3]
  101. "None."
  102. [4]
  103. "Protected Mode Exceptions"
  104. ""
  105. "#GP(0) If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. If the DS, ES, FS, or GS register contains a null segment selector."
  106. "#SS(0) If a memory operand effective address is outside the SS segment limit."
  107. "#PF(fault-code) If a page fault occurs."
  108. ""
  109. "Real-Address Mode Exceptions"
  110. ""
  111. "#GP If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit."
  112. "#SS If a memory operand effective address is outside the SS segment limit."
  113. ""
  114. "Virtual-8086 Mode Exceptions"
  115. ""
  116. "#GP(0) If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit."
  117. "#SS(0) If a memory operand effective address is outside the SS segment limit."
  118. "#PF(fault-code) If a page fault occurs."
  119. [5]
  120. "D7 XLAT m8 Set AL to memory byte DS:[(E)BX + unsigned AL]"
  121. "D7 XLATB Set AL to memory byte DS:[(E)BX + unsigned AL]"
  122. [6]
  123. </XLAT>
  124. </XLATB>
  125. <XOR>
  126. [1]
  127. "XOR: Logical Exclusive OR"
  128. ""
  129. "Performs a bitwise exclusive OR (XOR) operation on the destination (first) and source (second) operands and stores the result in the destination operand location. The source operand can be an immediate, a register, or a memory location; the destination operand can be a register or a memory location. (However, two memory operands cannot be used in one instruction.) Each bit of the result is 1 if the corresponding bits of the operands are different; each bit is 0 if the corresponding bits are the same."
  130. [2]
  131. "DEST ¼ DEST XOR SRC;"
  132. [3]
  133. "The OF and CF flags are cleared; the SF, ZF, and PF flags are set according to the result. The state of the AF flag is undefined."
  134. [4]
  135. "Protected Mode Exceptions"
  136. ""
  137. "#GP(0) If the destination operand points to a nonwritable segment. If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. If the DS, ES, FS, or GS register contains a null segment selector."
  138. "#SS(0) If a memory operand effective address is outside the SS segment limit."
  139. "#PF(fault-code) If a page fault occurs."
  140. "#AC(0) If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3."
  141. ""
  142. "Real-Address Mode Exceptions"
  143. ""
  144. "#GP If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit."
  145. "#SS If a memory operand effective address is outside the SS segment limit."
  146. ""
  147. "Virtual-8086 Mode Exceptions"
  148. ""
  149. "#GP(0) If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit."
  150. "#SS(0) If a memory operand effective address is outside the SS segment limit."
  151. "#PF(fault-code) If a page fault occurs."
  152. "#AC(0) If alignment checking is enabled and an unaligned memory reference is made."
  153. [5]
  154. "34 ib XOR AL, imm8 AL XOR imm8"
  155. "35 iw XOR AX, imm16 AX XOR imm16"
  156. "35 id XOR EAX, imm32 EAX XOR imm32"
  157. "80 /6 ib XOR r/m8,imm8 r/m8 XOR imm8"
  158. "81 /6 iw XOR r/m16,imm16 r/m16 XOR imm16"
  159. "81 /6 id XOR r/m32,imm32 r/m32 XOR imm32"
  160. "83 /6 ib XOR r/m16,imm8 r/m16 XOR imm8 (sign-extended)"
  161. "83 /6 ib XOR r/m32,imm8 r/m32 XOR imm8 (sign-extended)"
  162. "30 / r XOR r/m8,r8 r/m8 XOR r8"
  163. "31 / r XOR r/m16,r16 r/m16 XOR r16"
  164. "31 / r XOR r/m32,r32 r/m32 XOR r32"
  165. "32 / r XOR r8,r/m8 r8 XOR r/m8"
  166. "33 / r XOR r16,r/m16 r8 XOR r/m8"
  167. "33 / r XOR r32,r/m32 r8 XOR r/m8"
  168. [6]
  169. </XOR>