beautypg.com

Zilog Z8F0130 User Manual

Page 339

background image

UM013037-1212

Structures and Unions in Assembly Code

Zilog Developer Studio II – Z8 Encore!

User Manual

315

The

.TAG

directive to assign a label to have a structure type has the following form:

[tname]

.TAG

stag

; Apply stag to tname

[tname]

DS

ssize

; Allocate space for tname

Once applied to label tname, the individual structure elements are applied to tname to pro-
duce the desired offsets using tname as the structure base. For example, the label

tname.name_2

is created and assigned the value

tname + stag.name_2

. If there are

any alignment requirements with the structure, the

.TAG

directive attaches the required

alignment to the label. The optional count on the

.TAG

directive is meaningful only inside

a structure definition and implies an array of the

.TAG

structure.

Keeping the space allocation separate allows you to place the

.TAG

declarations that assign

structure to a label in the header file in a similar fashion to the

.STRUCT

and

XREF

direc-

tives. You can then include the header file in multiple source files wherever the label is
used. Make sure to perform the space allocation for the label in only one source file.

Examples of the

.TAG

directive are as follows:

DATE .STRUCT

MONTH DS 1

DAYDS 1

YEAR DS 2

DSIZE .ENDSTRUCT DATE

NAMELEN EQU 30

EMPLOYEE .STRUCT

NAME DS NAMELEN

SOCIAL DS 10

START .TAG DATE

SALARY DS 1

ESIZE .ENDSTRUCT EMPLOYEE

NEWYEARS .TAG DATE

NEWYEARS DS DSIZE

The

.TAG

directive in the last example above creates the symbols

NEWYEARS.MONTH

,

NEWYEARS.DAY

, and

NEWYEARS.YEAR

. The space for

NEWYEARS

is allocated by the

DS

directive.

Note: