#### 8.18.2 Syntax

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:

Immediate
  # number
Data Register
  %d0 through %d7
Address Register
  %a0 through %a7
  %a7 is also known as %sp, i.e. the Stack Pointer. `%a6` is also known as %fp, the Frame Pointer.
Address Register Indirect
  %a0@ through %a7@
Address Register Postincrement
  %a0@+ through %a7@+
Address Register Predecrement
  %a0@- through %a7@-
Indirect Plus Offset
  apc @( number )
Index
  apc @( number , register : size : scale )

  The number may be omitted.

Postindex
  apc @( number )@( onumber , register : size : scale )

  The onumber or the register, but not both, may be omitted.

Preindex
  apc @( number , register : size : scale )@( onumber )

  The number may be omitted. Omitting the register produces the Postindex addressing mode.

Absolute
  symbol, or digits, optionally followed by :b, :w, or :l.