Volume 3: General-Purpose and System Instructions - Stanford ...
Volume 3: General-Purpose and System Instructions - Stanford ... Volume 3: General-Purpose and System Instructions - Stanford ...
AMD64 Technology 24594 Rev. 3.10 February 2005Exception (vector)RealGeneral protection, #GP X X XVirtual8086 Protected Cause of ExceptionA memory address exceeded a data segment limit or wasnon-canonical.XA null data segment was used to reference memory.X The destination operand was in a non-writable segment.Page fault, #PF X X A page fault resulted from the execution of the instruction.Alignment check, #AC X X An unaligned memory reference was performed while alignmentchecking was enabled.204 MOVNTI
24594 Rev. 3.10 February 2005 AMD64 TechnologyMOVSMOVSBMOVSWMOVSDMOVSQMove StringMoves a byte, word, doubleword, or quadword from the memory location pointed to byDS:rSI to the memory location pointed to by ES:rDI, and then increments ordecrements the rSI and rDI registers according to the state of the DF flag in therFLAGS register.If the DF flag is 0, the instruction increments both pointers; otherwise, it decrementsthem. It increments or decrements the pointers by 1, 2, 4, or 8, depending on the sizeof the operands.The forms of the MOVSx instruction with explicit operands address the first operandat seg:[rSI]. The value of seg defaults to the DS segment, but can be overridden by asegment prefix. These instructions always address the second operand at ES:[rDI] (ESmay not be overridden). The explicit operands serve only to specify the type (size) ofthe value being moved.The no-operands forms of the instruction use the DS:[rSI] and ES:[rDI] registers topoint to the value to be moved (they do not allow a segment prefix). The mnemonicdetermines the size of the operands.Do not confuse this MOVSD instruction with the same-mnemonic MOVSD (movescalar double-precision floating-point) instruction in the 128-bit media instruction set.Assemblers can distinguish the instructions by the number and type of operands.The MOVSx instructions support the REP prefixes. For details about the REPprefixes, see “Repeat Prefixes” on page 10.Mnemonic Opcode DescriptionMOVS mem8, mem8MOVS mem16, mem16MOVS mem32, mem32A4A5A5Move byte at DS:rSI to ES:rDI, and then increment or decrementrSI and rDI.Move word at DS:rSI to ES:rDI, and then increment or decrementrSI and rDI.Move doubleword at DS:rSI to ES:rDI, and then increment ordecrement rSI and rDI.MOVSx 205
- Page 184 and 185: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 186 and 187: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 188 and 189: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 190 and 191: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 192 and 193: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 194 and 195: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 196 and 197: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 198 and 199: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 200 and 201: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 202 and 203: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 204 and 205: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 206 and 207: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 208 and 209: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 210 and 211: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 212 and 213: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 214 and 215: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 216 and 217: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 218 and 219: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 220 and 221: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 222 and 223: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 224 and 225: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 226 and 227: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 228 and 229: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 230 and 231: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 232 and 233: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 236 and 237: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 238 and 239: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 240 and 241: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 242 and 243: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 244 and 245: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 246 and 247: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 248 and 249: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 250 and 251: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 252 and 253: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 254 and 255: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 256 and 257: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 258 and 259: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 260 and 261: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 262 and 263: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 264 and 265: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 266 and 267: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 268 and 269: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 270 and 271: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 272 and 273: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 274 and 275: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 276 and 277: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 278 and 279: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 280 and 281: AMD64 Technology 24594 Rev. 3.10 Fe
- Page 282 and 283: AMD64 Technology 24594 Rev. 3.10 Fe
AMD64 Technology 24594 Rev. 3.10 February 2005Exception (vector)Real<strong>General</strong> protection, #GP X X XVirtual8086 Protected Cause of ExceptionA memory address exceeded a data segment limit or wasnon-canonical.XA null data segment was used to reference memory.X The destination oper<strong>and</strong> was in a non-writable segment.Page fault, #PF X X A page fault resulted from the execution of the instruction.Alignment check, #AC X X An unaligned memory reference was performed while alignmentchecking was enabled.204 MOVNTI