Struct and .endstruct directives – Zilog ZUSBOPTS User Manual
Page 268

Directives
UM017105-0511
240
Zilog Developer Studio II – ZNEO™
User Manual
.STRUCT and .ENDSTRUCT Directives
A structure is a collection of various elements grouped together under a single name for
convenient handling. The
.STRUCT
and
.ENDSTRUCT
directives can be used to define the
layout for a structure in assembly by identifying the various elements and their sizes. The
.STRUCT
directive assigns symbolic offsets to the elements of a structure. It does not allo-
cate memory. It merely creates a symbolic template that can be used repeatedly.
The
.STRUCT
and
.ENDSTRUCT
directives have the following form:
[stag]
.STRUCT
[offset | : parent]
[name_1]
DS
count1
[name_2]
DS
count2
[tname]
.TAG
stagx [count]
...
[name_n]
DS
count3
[ssize]
.ENDSTRUCT
[stag]
The label stag defines a symbol to use to reference the structure; the expression offset, if
used, indicates a starting offset value to use for the first element encountered; otherwise,
the starting offset defaults to zero.
If parent is specified rather than offset, the parent must be the name of a previously
defined structure, and the offset is the size of the parent structure. In addition, each name
in the parent structure is inserted in the new structure.
Each element can have an optional label, such as name_1, which is assigned the value of
the element’s offset into the structure and which can be used as the symbolic offset. If stag
is missing, these element names become global symbols; otherwise, they are referenced
using the syntax
stag.name
. The directives following the optional label can be any space
reserving directive such as
DS
, or the
.TAG
directive (defined below), and the structure
offset is adjusted accordingly.
The label ssize, if provided, is a label in the global name space and is assigned the size of
the structure.
If a label stag is specified with the
.ENDSTRUCT
directive, it must match the label that is
used for the
.STRUCT
directive. The intent is to allow for code readability with some
checking by the assembler.
An example structure definition is:
DATE
.STRUCT
MONTH
DS
1
DAY
DS
1