x86 Assembly Language Reference Manual

Exit Print View

Updated: December 2014
 
 

3.2.1 Data Transfer Instructions

The data transfer instructions move data between memory and the general-purpose and segment registers, and perform operations such as conditional moves, stack access, and data conversion.

Table 3-2  Data Transfer Instructions
Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
bswap{lq}
BSWAP
byte swap
bswapq valid only under –m64
cbtw
CBW
convert byte to word
cltd
CDQ
convert doubleword to quadword
%eax → %edx:%eax
cltq
CDQE
convert doubleword to quadword
%eax → %rax
cltq valid only under –m64
cmova{wlq}, cmov{wlq}.a
CMOVA
conditional move if above
cmovaq valid only under –m64
cmovae{wlq}, cmov{wlq}.ae
CMOVAE
conditional move if above or equal
cmovaeq valid only under –m64
cmovb{wlq}, cmov{wlq}.b
CMOVB
conditional move if below
cmovbq valid only under –m64
cmovbe{wlq}, cmov{wlq}.be
CMOVBE
conditional move if below or equal
cmovbeq valid only under –m64
cmovc{wlq}, cmov{wlq}.c
CMOVC
conditional move if carry
cmovcq valid only under –m64
cmove{wlq}, cmov{wlq}.e
CMOVE
conditional move if equal
cmoveq valid only under –m64
cmovg{wlq}, cmov{wlq}.g
CMOVG
conditional move if greater
cmovgq valid only under –m64
cmovge{wlq}, cmov{wlq}.ge
CMOVGE
conditional move if greater or equal
cmovgeq valid only under –m64
cmovl{wlq}, cmov{wlq}.l
CMOVL
conditional move if less
cmovlq valid only under –m64
cmovle{wlq}, cmov{wlq}.le
COMVLE
conditional move if less or equal
cmovleq valid only under –m64
cmovna{wlq}, cmov{wlq}.na
CMOVNA
conditional move if not above
cmovnaq valid only under –m64
cmovnae{wlq}, cmov{wlq}.nae
CMOVNAE
conditional move if not above or equal
cmovnaeq valid only under –m64
cmovnb{wlq}, cmov{wlq}.nb
CMOVNB
conditional move if not below
cmovnbq valid only under –m64
cmovnbe{wlq}, cmov{wlq}.nbe
CMOVNBE
conditional move if not below or equal
cmovnbeq valid only under –m64
cmovnc{wlq}, cmov{wlq}.nc
CMOVNC
conditional move if not carry
cmovncq valid only under –m64
cmovne{wlq}, cmov{wlq}.ne
CMOVNE
conditional move if not equal
cmovneq valid only under –m64
cmovng{wlq}, cmov{wlq}.ng
CMOVNG
conditional move if greater
cmovngq valid only under –m64
cmovnge{wlq}, cmov{wlq}.nge
CMOVNGE
conditional move if not greater or equal
cmovngeq valid only under –m64
cmovnl{wlq}, cmov{wlq}.nl
CMOVNL
conditional move if not less
cmovnlq valid only under –m64
cmovnle{wlq}, cmov{wlq}.nle
CMOVNLE
conditional move if not above or equal
cmovnleq valid only under –m64
cmovno{wlq}, cmov{wlq}.no
CMOVNO
conditional move if not overflow
cmovnoq valid only under –m64
cmovnp{wlq}, cmov{wlq}.np
CMOVNP
conditional move if not parity
cmovnpq valid only under –m64
cmovns{wlq}, cmov{wlq}.ns
CMOVNS
conditional move if not sign (non-negative)
cmovnsq valid only under –m64
cmovnz{wlq}, cmov{wlq}.nz
CMOVNZ
conditional move if not zero
cmovnzq valid only under –m64
cmovo{wlq}, cmov{wlq}.o
CMOVO
conditional move if overflow
cmovoq valid only under –m64
cmovp{wlq}, cmov{wlq}.p
CMOVP
conditional move if parity
cmovpq valid only under –m64
cmovpe{wlq}, cmov{wlq}.pe
CMOVPE
conditional move if parity even
cmovpeq valid only under –m64
cmovpo{wlq}, cmov{wlq}.po
CMOVPO
conditional move if parity odd
cmovpoq valid only under –m64
cmovs{wlq}, cmov{wlq}.s
CMOVS
conditional move if sign (negative)
cmovsq valid only under –m64
cmovz{wlq}, cmov{wlq}.z
CMOVZ
conditional move if zero
cmovzq valid only under –m64
cmpxchg{bwlq}
CMPXCHG
compare and exchange
cmpxchgq valid only under –m64
cmpxchg8b
CMPXCHG8B
compare and exchange 8 bytes
cqtd
CQO
convert quadword to octword
%rax → %rdx:%rax
cqtd valid only under –m64
cqto
CQO
convert quadword to octword
%rax → %rdx:%rax
cqto valid only under –m64
cwtd
CWD
convert word to doubleword
%ax → %dx:%ax
cwtl
CWDE
convert word to doubleword in %eax register
%ax → %eax
invpcid
INVPCID
Invalidate Process-Context Identifier
page 3-416 (253666-048US/Sep.2013)
mov{bwlq}
MOV
move data between immediate values, general purpose registers, segment registers, and memory
movq valid only under –m64
movabs{bwlq}
MOVABS
move immediate value to register
movabs valid only under –m64
movabs{bwlq}A
MOVABS
move immediate value to register {AL, AX, GAX, RAX}
movabs valid only under –m64
movsb{wlq}, movsw{lq}
MOVSX
move and sign extend
movsbq and movswq valid only under –m64
movzb{wlq}, movzw{lq}
MOVZX
move and zero extend
movzbq and movzwq valid only under –m64
pop{wlq}
POP
pop stack
popq valid only under –m64
popaw
POPA
pop general-purpose registers from stack
popaw invalid under –m64
popal, popa
POPAD
pop general-purpose registers from stack
invalid under –m64
push{wlq}
PUSH
push onto stack
pushq valid only under –m64
pushaw
PUSHA
push general-purpose registers onto stack
pushaw invalid under –m64
pushal, pusha
PUSHAD
push general-purpose registers onto stack
invalid under –m64
xadd{bwlq}
XADD
exchange and add
xaddq valid only under –m64
xchg{bwlq}
XCHG
exchange
xchgq valid only under –m64
xchg{bwlq}A
XCHG
exchange
xchgqA valid only under –m64