Using as: Z80 Opcodes

Previous: Z80 Directives, Up: Z80-Dependent [Contents][Index]

#### 9.53.5 Opcodes

In line with common practice, Z80 mnemonics are used for both the Z80 and the R800.

In many instructions it is possible to use one of the half index registers (‘`ixl`’,‘`ixh`’,‘`iyl`’,‘`iyh`’) in stead of an 8-bit general purpose register. This yields instructions that are documented on the R800 and undocumented on the Z80. Similarly `in f,(c)` is documented on the R800 and undocumented on the Z80.

The assembler also supports the following undocumented Z80-instructions, that have not been adopted in the R800 instruction set:

`out (c),0`

  Sends zero to the port pointed to by register c.

`sli m`

  Equivalent to `m = (m<<1)+1`, the operand m can be any operand that is valid for ‘`sla`’. One can use ‘`sll`’ as a synonym for ‘`sli`’.

`op (ix+d), r`

  This is equivalent to

      ld r, (ix+d)
      opc r
      ld (ix+d), r

  The operation ‘`opc`’ may be any of ‘`res b,`’, ‘`set b,`’, ‘`rl`’, ‘`rlc`’, ‘`rr`’, ‘`rrc`’, ‘`sla`’, ‘`sli`’, ‘`sra`’ and ‘`srl`’, and the register ‘`r`’ may be any of ‘`a`’, ‘`b`’, ‘`c`’, ‘`d`’, ‘`e`’, ‘`h`’ and ‘`l`’.

`opc (iy+d), r`

  As above, but with ‘`iy`’ instead of ‘`ix`’.

The web site at http://www.z80.info is a good starting place to find more information on programming the Z80.