<<<    Index    >>>
3-402
INSTRUCTION SET REFERENCE
MOV—Move
NOTES: 
*The moffs8, moffs16, and moffs32 operands specify a simple offset relative to the segment base, where
8, 16, and 32 refer to the size of the data. The address-size attribute of the instruction determines the size
of the offset, either 16 or 32 bits.
**In 32-bit mode, the assembler may insert the 16-bit operand-size prefix with this instruction (refer to the
following “Description” section for further information).
Description
This instruction copies the second operand (source operand) to the first operand (destination
operand). The source operand can be an immediate value, general-purpose register, segment
register, or memory location; the destination register can be a general-purpose register, segment
register, or memory location. Both operands must be the same size, which can be a byte, a word,
or a doubleword.
The MOV instruction cannot be used to load the CS register. Attempting to do so results in an
invalid opcode exception (#UD). To load the CS register, use the far JMP, CALL, or RET
instruction.
Opcode
Instruction
Description
88 /r
MOV r/m8,r8
Move r8 to r/m8
89 /r
MOV r/m16,r16
Move r16 to r/m16
89 /r
MOV r/m32,r32
Move r32 to r/m32
8A /r
MOV r8,r/m8
Move r/m8 to r8
8B /r
MOV r16,r/m16
Move r/m16 to r16
8B /r
MOV r32,r/m32
Move r/m32 to r32
8C /r
MOV r/m16,Sreg**
Move segment register to r/m16
8E /r
MOV Sreg,r/m16**
Move r/m16 to segment register
A0
MOV AL,moffs8*
Move byte at (seg:offset) to AL
A1
MOV AX,moffs16*
Move word at (seg:offset) to AX
A1
MOV EAX,moffs32*
Move doubleword at (seg:offset) to EAX
A2
MOV moffs8*,AL
Move AL to (seg:offset)
A3
MOV moffs16*,AX
Move AX to (seg:offset)
A3
MOV moffs32*,EAX
Move EAX to (seg:offset)
B0+ rb
MOV r8,imm8
Move imm8 to r8
B8+ rw
MOV r16,imm16
Move imm16 to r16
B8+ rd
MOV r32,imm32
Move imm32 to r32
C6 /0
MOV r/m8,imm8
Move imm8 to r/m8
C7 /0
MOV r/m16,imm16
Move imm16 to r/m16
C7 /0
MOV r/m32,imm32
Move imm32 to r/m32
<<<    Index    >>>