move
Move data
Moves the value from the first operand to the second operand.
Used in
- Bytes, words and longsM68K assembly
- The M68K instruction setM68K assembly
- Addressing modesM68K assembly
- The condition code registerM68K assembly
- org, equ, dc and dsM68K assembly
- Memory regions and executable filesM68K assembly
- Compare and branchM68K assembly
- Loops and dbraM68K assembly
- Arithmetic, logic and bitsM68K assembly
- Arrays, strings and (a0)+M68K assembly
XNZVC –●●00
- ● set from the result
- 0 always 0
- – not changed
Forms
Privileged
These forms require supervisor mode, the mode a program starts in. In user mode they raise a privilege violation. See user and supervisor mode.
move ,Size .lmove ,Size .l
68010 and later
These forms are available on the 68010 and 68020. Select opt p=68010 or opt p=68020 before any code or data.
Operands
<ea>- An operand using one of the addressing modes listed for this form. The list determines whether it can be a register, memory or an immediate value. With
opt p=68020, an allowedd(An,Xn)ord(PC,Xn)mode also permits the corresponding 68020 indexed and memory indirect forms. See 68020 addressing. More ccr- The condition-code register: the low byte of
sr, containing theX,N,Z,VandCflags. More sr- The 16-bit status register. Its upper byte contains system flags; its lower byte contains the condition codes. More
usp- The user stack pointer: the
a7a program has in user mode. Supervisor code reads and sets it through an address register, as inmove.l usp, a0. More An- An address register,
a0toa7;spis another name fora7. More #imm- An immediate value written after
#: a number, character or label, such as#10,#$FFor#'a'. It must fit the operation’s size: byte-128to255, word-32768to65535, or long-2147483648to4294967295; signed and unsigned spellings are accepted. More
An address-register destination uses movea. move.l a0, usp writes the user stack pointer, and move.l usp, a0 reads it. Both forms require supervisor mode. See user and supervisor mode.
move.w sr, d0 copies the status register. This is allowed in user mode on the 68000, but requires supervisor mode on the 68010 and 68020. Those processors also provide move.w ccr, d0, which lets user code read the condition codes.
* --- Different sizes ---
move.b #$FF, d0
move.w #$1234, d1
move.l #$AABBCCDD, d2
* --- Register to register ---
move.l d2, d3
* --- Immediate to memory ---
lea $2000, a0
move.l #$DEADBEEF, (a0)
move.w #$1234, 4(a0)
* --- Memory to register ---
move.l (a0), d4
move.w 4(a0), d5
* --- Post-increment and pre-decrement ---
lea $2000, a1
move.l (a1)+, d6
move.l #$11223344, -(a1)
* --- The user stack pointer, for supervisor code only ---
lea $8000, a2
move.l a2, usp ; the a7 of user mode will start at $8000
move.l usp, a3