move

Move data

Moves the value from the first operand to the second operand.

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 .l
  • move , 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 allowed d(An,Xn) or d(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 the X, N, Z, V and C flags. 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 a7 a program has in user mode. Supervisor code reads and sets it through an address register, as in move.l usp, a0. More
An
An address register, a0 to a7; sp is another name for a7. More
#imm
An immediate value written after #: a number, character or label, such as #10, #$FF or #'a'. It must fit the operation’s size: byte -128 to 255, word -32768 to 65535, or long -2147483648 to 4294967295; 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