dest = source
The movzx instruction moves the source value (second operand) to the destination register. The source can be a 64, 32, 16 or 8 bit register or memory location. The source must be a smaller size than the destination. If the destination is a 32 bit register, the top half is zeroed out as if a 64 bit register were used.
movzx differs from mov in that it places 0's into all the higher order bits of the destination register.
movzx rax, dx ; moves dx to ax ; zeroes out the rest of rax movzx eax, dx ; moves dx to ax ; zeroes out the rest of rax ; same as movzx rax, dx movzx ax, dl ; moves dl to al and 0 to ah ; leaves the rest of rax alone movzx eax, word [x] ; moves 16 bit variable x to eax ; zeroes out the rest of rax movzx rax, dword [x] ; moves 32 bit variable x to eax ; zeroes out the rest of rax ; same as mov eax, dword [x] movzx rax, byte [x] ; moves 8 bit variable x to al ; zeroes out the rest of rax