This syntax for the Motorola 680x0 was developed at MIT.
The 680x0 version of as
uses instructions names and
syntax compatible with the Sun assembler. Intervening periods are
ignored; for example, movl
is equivalent to mov.l
.
In the following table apc stands for any of the address registers
(%a0
through %a7
), the program counter (%pc
), the
zero-address relative to the program counter (%zpc
), a suppressed
address register (%za0
through %za7
), or it may be omitted
entirely. The use of size means one of w
or l
, and
it may be omitted, along with the leading colon, unless a scale is also
specified. The use of scale means one of 1
, 2
,
4
, or 8
, and it may always be omitted along with the
leading colon.
The following addressing modes are understood:
#
number
%d0
through %d7
%a0
through %a7
%a7
is also known as %sp
, i.e. the Stack Pointer. %a6
is also known as %fp
, the Frame Pointer.
%a0@
through %a7@
%a0@+
through %a7@+
%a0@-
through %a7@-
apc@(
number)
apc@(
number,
register:
size:
scale)
The number may be omitted.
apc@(
number)@(
onumber,
register:
size:
scale)
The onumber or the register, but not both, may be omitted.
apc@(
number,
register:
size:
scale)@(
onumber)
The number may be omitted. Omitting the register produces
the Postindex addressing mode.
symbol
, or
digits
, optionally followed by
:b
, :w
, or :l
.