#### 9.23.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`’.