17.2. Syntax

17.2.1. Special Characters

; is the line comment character.

$ can be used instead of a newline to separate statements. Therefore you may not use $ in symbol names on the H8/300.

17.2.2. Register Names

You can use predefined symbols of the form rnh and rnl to refer to the H8/300 registers as sixteen 8-bit general-purpose registers. n is a digit from 0 to 7); for instance, both r0h and r7l are valid register names.

You can also use the eight predefined symbols rn to refer to the H8/300 registers as 16-bit registers (you must use this form for addressing).

On the H8/300H, you can also use the eight predefined symbols ern (er0er7) to refer to the 32-bit general purpose registers.

The two control registers are called pc (program counter; a 16-bit register, except on the H8/300H where it is 24 bits) and ccr (condition code register; an 8-bit register). r7 is used as the stack pointer, and can also be called sp.

17.2.3. Addressing Modes

as understands the following addressing modes for the H8/300:

rn

Register direct

@rn

Register indirect

@(d, rn), @(d:16, rn), @(d:24, rn)

Register indirect: 16-bit or 24-bit displacement d from register n. (24-bit displacements are only meaningful on the H8/300H.)

@rn+

Register indirect with post-increment

@-rn

Register indirect with pre-decrement

@aa, @aa:8, @aa:16, @aa:24

Absolute address aa. (The address size :24 only makes sense on the H8/300H.)

#xx, #xx:8, #xx:16, #xx:32

Immediate data xx. You may specify the :8, :16, or :32 for clarity, if you wish; but as neither requires this nor uses it--the data size required is taken from context.

@@aa, @@aa:8

Memory indirect. You may specify the :8 for clarity, if you wish; but as neither requires this nor uses it.