mov

8086 and later

Move

mov al, moffs | mov ax, moffs | mov eax, moffs | mov rax, moffs | mov moffs, al | mov moffs, ax | mov moffs, eax | mov moffs, rax | mov r/m8, reg8 | mov r/m16, reg16 | mov r/m32, reg32 | mov r/m64, reg64 | mov reg8, r/m8 | mov reg16, r/m16 | mov reg32, r/m32 | mov reg64, r/m64 | mov reg64, imm32 | mov reg8, imm8 | mov reg16, imm16 | mov reg32, imm32 | mov reg64, imm64 | mov reg8, imm8 {abs} | mov reg16, imm16 {abs} | mov reg32, imm32 {abs} | mov reg64, imm64 {abs} | mov r/m8, imm8 | mov r/m16, imm16 | mov r/m32, imm32 | mov r/m64, imm32 | mov reg32, creg | mov creg, reg32 | mov reg64, creg | mov creg, reg64 | mov reg32, dreg | mov dreg, reg32 | mov reg64, dreg | mov dreg, reg64 | mov reg32, treg | mov treg, reg32 | mov mem16, segreg | mov reg16, segreg | mov reg32, segreg | mov reg64, segreg | mov segreg, mem16 | mov segreg, reg16 | mov segreg, reg32 | mov segreg, reg64 | mov kreg8, kreg/mem8 | mov kreg16, kreg/mem16 | mov kreg32, kreg/mem32 | mov kreg64, kreg/mem64 | mov mem8, kreg8 | mov mem16, kreg16 | mov mem32, kreg32 | mov mem64, kreg64 | mov kreg32, reg32 | mov kreg64, reg64 | mov reg32, kreg32 | mov reg64, kreg64 | mov kreg8, reg32 | mov kreg8, reg8 | mov kreg16, reg32 | mov kreg16, reg16 | mov reg32, kreg8 | mov reg32, kreg16

MOV copies the contents of its source (second) operand into its destination (first) operand.

In all forms of the MOV instruction, the two operands are the same size, except for moving between a segment register and an r/m32 operand. These instructions are treated exactly like the corresponding 16-bit equivalent (so that, for example, \c{MOV DS,EAX} functions identically to MOV DS,AX but saves a prefix when in 32-bit mode), except that when a segment register is moved into a 32-bit destination, the top two bytes of the result are undefined.

MOV may not use CS as a destination.

CR4 is only a supported register on the Pentium and above.

Test registers are supported on 386/486 processors and on some non-Intel Pentium class processors.

Loading...

Forms

Every form of mov the assembler accepts, from NASM's own instruction table. The second column is the processor that introduced the form; a badge marks a form that needs an extension, that is lockable, or that long mode dropped.

FormSinceNotes
mov al, moffs8086
mov ax, moffs8086
mov eax, moffs386
mov rax, moffsx86-64long
mov moffs, al8086
mov moffs, ax8086
mov moffs, eax386
mov moffs, raxx86-64long
mov r/m8, reg88086
mov r/m16, reg168086
mov r/m32, reg32386
mov r/m64, reg64x86-64long
mov reg8, r/m88086
mov reg16, r/m168086
mov reg32, r/m32386
mov reg64, r/m64x86-64long
mov reg64, imm32x86-64long
mov reg8, imm88086
mov reg16, imm168086
mov reg32, imm32386
mov reg64, imm64x86-64long
mov reg8, imm8 {abs}8086
mov reg16, imm16 {abs}8086
mov reg32, imm32 {abs}386
mov reg64, imm64 {abs}x86-64long
mov r/m8, imm88086
mov r/m16, imm168086
mov r/m32, imm32386
mov r/m64, imm32x86-64long
mov reg32, creg386nolongpriv
mov creg, reg32386nolongpriv
mov reg64, cregx86-64longpriv
mov creg, reg64x86-64longpriv
mov reg32, dreg386nolongpriv
mov dreg, reg32386nolongpriv
mov reg64, dregx86-64longpriv
mov dreg, reg64x86-64longpriv
mov reg32, treg386nolongobsolete
mov treg, reg32386nolongobsolete
mov mem16, segreg8086
mov reg16, segreg8086
mov reg32, segreg386
mov reg64, segreg386long
mov segreg, mem168086
mov segreg, reg168086
mov segreg, reg32386
mov segreg, reg64386long
mov kreg8, kreg/mem8recentavx512dq
mov kreg16, kreg/mem16recentavx512f
mov kreg32, kreg/mem32recentavx512bw
mov kreg64, kreg/mem64recentavx512bw
mov mem8, kreg8recentavx512dq
mov mem16, kreg16recentavx512dq
mov mem32, kreg32recentavx512bw
mov mem64, kreg64recentavx512bw
mov kreg32, reg32recentavx512bw
mov kreg64, reg64x86-64avx512bwlong
mov reg32, kreg32recentavx512bw
mov reg64, kreg64x86-64avx512bwlong
mov kreg8, reg32recentavx512dq
mov kreg8, reg8recentavx512dq
mov kreg16, reg32recentavx512f
mov kreg16, reg16recentavx512f
mov reg32, kreg8recentavx512dq
mov reg32, kreg16recentavx512f