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