beautypg.com

Structured assembly – Zilog Z8F0130 User Manual

Page 341

background image

UM013037-1212

Structured Assembly

Zilog Developer Studio II – Z8 Encore!

User Manual

317

modified name if the result matches a name created by the

.STRUCT

,

.UNION

, or

.TAG

directives.

The

.WITH

directives can be nested, in which case the search is from the deepest level of

nesting outward. In the event that multiple names are found, a warning is generated and
the first such name is used.

If name is specified with the

.ENDWITH

directive, the name must match that used for the

.WITH

directive. The intent is to allow for code readability with some checking by the

assembler.

To provide an example, examine the

COMPUTE_PAY

routine below.

COMPUTE_PAY:

; Enter with pointer to an EMPLOYEE in R2, days in R1

; Return with pay in R0,R1

LD R0,EMPLOYEE.SALARY(R2)

MULT RR0

RET

The above routine could be rewritten using the

.WITH

directive as:

COMPUTE_PAY:

; Enter with pointer to an EMPLOYEE in R2, days in R1

; Return with pay in R0,R1

.WITH EMPLOYEE

LD R0, SALARY(R2)

MULT RR0

RET

.ENDWITH EMPLOYEE

Structured Assembly

Structured assembly supports execution-time selection of sequences of source statements
based on execution-time conditions. The structured assembly directives test for a specified
condition and execute a block of statements only if the condition is true.

The structured assembly directives, when used in conjunction with the ability to assembly
and link modules independently, facilitate structured programming in assembly language.
It can be difficult to assimilate the logical structure of a traditional, nonstructured assem-
bly language program. Structured assembly language programs are generally easier to read
and understand than nonstructured programs. They might also be easier to debug and
change. The following sections describe structured assembly: