Several assembler instructions used in earlier assemblers have
been extended in High Level Assembler.
- CNOP instruction:
- Symbols in the
operand field of a CNOP instruction do not need to be previously defined.
The
operands of the CNOP instruction are extended to allow for any boundary
within a quadword to be specified. Valid values for the first operand
are the even numbers from 0 to 14 inclusive, while the values for
the second operand are 4, 8, or 16. Note that any present use of CNOP
may generate different object code but the new object code will not
change the execution.
- COPY instruction:
- Any number of nestings (COPY instructions within code that has
been brought into your program by another COPY instruction) is permitted.
However, recursive COPY instructions are not permitted.
A variable
symbol that has been assigned a valid ordinary symbol may be used
as the operand of a COPY instruction in open code:
&VAR SETC 'LIBMEM'
COPY &VAR
+ COPY LIBMEM Generated Statement
- DC instruction:
- The DC instruction has been enhanced to cater for the new
binary and decimal floating-point numbers, Unicode character constants,
and doubleword fixed-point and A-type address constants. As well,
the J-type, Q-type and R-type address constants have been added.
A
new data type, CA, has been added to indicate an ASCII character constant
type to be represented. This constant is not modified by the TRANSLATE
option. The CE data type generates an EBCDIC constant that is not
modified by the TRANSLATE option.
A new subfield has been added
for the program type of symbol.
- DROP instruction:
- The DROP instruction
now lets you end the domain of labeled USINGs and labeled dependent
USINGs. See Labeled USINGs and qualified symbols and Dependent USINGs.
- DS instruction:
- A new subfield has been added for
the program type of symbol.
- DXD instruction:
- The
DXD instruction now aligns external dummy sections to the most restrictive
alignment of the specified operands (instead of that of the first
operand).
- EQU instruction:
- Symbols appearing
in the first operand of the EQU instruction do not need to be previously
defined. In the following example, both WIDTH and LENGTH can
be defined later in the source code:
Name Operation Operand
VAL EQU 40-WIDTH+LENGTH
Two new operands
are provided for the EQU instruction, a program-type operand, and
an assembler-type operand.
- ISEQ instruction:
- Sequence checking
of any column on input records is allowed.
- OPSYN instruction:
- You can code OPSYN instructions anywhere
in your source module.
- ORG instruction:
- Two new operands
are provided for the ORG statement that will specify the boundary
and offset to be used to set the location counter.
The BOUNDARY
operand is an absolute expression that must be a power of 2 with a
range from 8 (doubleword) to 4096 (page).
The OFFSET operand
is any absolute expression.
If BOUNDARY and/or OFFSET are used,
then the resultant location counter will be calculated by rounding
the expression up to the next higher BOUNDARY and then adding the
OFFSET value.
- POP instruction:
- An additional operand,
NOPRINT, can be specified with the POP instruction to cause the assembler
to suppress the printing of the specified POP statement. The operand
ACONTROL saves the ACONTROL status.
- PRINT instruction:
- Seven additional
operands can be specified with the PRINT instruction. They are:
- MCALL | NOMCALL
- The MCALL operand instructs the assembler to print nested macro
call instructions.
The NOMCALL operand suppresses the printing
of nested macro call instructions.
- MSOURCE | NOMSOURCE
- The MSOURCE operand causes the assembler to print the source
statements generated during macro processing, as well as the assembled
addresses and generated object code of the statements.
The NOMSOURCE
operand suppresses the printing of the generated source statements,
but does not suppress the printing of the assembled addresses and
generated object code.
- UHEAD | NOUHEAD
- The UHEAD operand causes the assembler to print a summary of
active USINGs following the TITLE line on each page of the source
and object program section of the assembler listing.
The NOUHEAD
operand suppresses the printing of this summary.
- NOPRINT
- The NOPRINT operand causes the assembler to suppress the printing
of the PRINT statement that is specified.
The assembler has changed the way
generated object code is printed in the assembler listing when the
PRINT NOGEN instruction is used. Now the object code for the first
generated instruction, or the first 8 bytes of generated data is printed
in the object code column of the listing on
the same line as the macro call instruction. The DC, DS, DXD, and
CXD instructions can cause the assembler to generate zeros as alignment
data. With PRINT NOGEN the generated alignment data is not printed
in the listing.
- PUSH instruction:
- An additional operand,
NOPRINT, can be specified with the PUSH instruction to cause the assembler
to suppress the printing of the specified PUSH statement. The operand
ACONTROL restores the ACONTROL status.
- USING statements:
- Labeled USINGs and dependent USINGs provide you with enhanced
control over the resolution of symbolic expressions into base-displacement
form with specific base registers. Dependent USINGs can be labeled
or unlabeled.
The end of range parameter lets you specify a range
for the USING statement, rather than accepting the default range.
See Labeled USINGs and qualified symbols and Dependent USINGs.