Zilog Z8F0130 User Manual
Page 337
![background image](https://www.manualsdir.com/files/771166/content/doc337.png)
UM013037-1212
Structures and Unions in Assembly Code
Zilog Developer Studio II – Z8 Encore!
User Manual
313
•
.STRUCT and .ENDSTRUCT Directives
•
•
•
.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.
- Z8F0131 Z8F0230 Z8F0231 Z8F0430 Z8F0431 Z8F043A Z8F0830 Z8F0831 Z8F083A Z8F1232 Z8F1233 Z8F0113 Z8F011A Z8F0123 Z8F012A Z8F0213 Z8F021A Z8F0223 Z8F022A Z8F0411 Z8F0412 Z8F0413 Z8F041A Z8F0421 Z8F0422 Z8F0423 Z8F042A Z8F0811 Z8F0812 Z8F0813 Z8F081A Z8F0821 Z8F0822 Z8F0823 Z8F082A Z8F0880 Z8F1621 Z8F1622 Z8F1680 Z8F1681 Z8F1682 Z8F2421 Z8F2422 Z8F2480 Z8F3221 Z8F3222 Z8F3281 Z8F3282 Z8F4821 Z8F4822 Z8F4823 Z8F6081 Z8F6082 Z8F6421 Z8F6422 Z8F6423 Z8F6481 Z8F6482 Z8FS021A ZMOT1AHH Z8FS040B ZMOT0BHH ZMOT0BSB Z8FMC04 Z8FMC08 Z8FMC16