Node:M68K-Syntax, Next:M68K-Moto-Syntax, Previous:M68K-Opts, Up:M68K-Dependent

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