IBM OS/390 User Manual

Page of 673
Chapter 13. Assembler
13.1 Assembler Products
In OS/390, the High-Level Assembler for MVS and VM Program Product
(5696-234) is required for system generation (SYSGEN) and maintenance
activities. It can also be used for application programming projects, and must be
used when assembler routines are designed for 31-bit addressing facilities. See
High-Level Assembler for MVS and VM General Information, GC26-4943 and
OS/390 MVS Extended Addressability Guide, GC28-1769 for more information on
this subject.
A Guide to Using MVS/XA Interface Facilities, SR21-1468 and SR21-1469, is
recommended for installations that wish to extend or customize system functions
provided by OS/390. The 
interface facilities
″ 
described will use either exit or
macro instructions to provide customization.
 Recommendation 
In converting assembler programs from VSE to MVS no attempt should be
made initially to use 31-bit programming techniques. The main objective
should be to get the programs 
converted to MVS programs as expediently
as possible
″; 
that is, don
t add new facilities (31-bit) at the outset. Once the
programs are converted and operate successfully in MVS, they could then be
reworked for 31-bit addressing if the need exists; for example, to address a
VSCR problem.
13.2 General Assembler Conversion Comments
One of the most challenging tasks in moving from VSE to MVS may be the
modification of application programs at the assembler language level. Coding at
the assembler level includes control program macros and user-written machine
language instructions. The machine language instructions are identical in both
systems. The control program (or supervisor) macros and input/output macros of
the systems are different, even though some have the same name. All base
register usage, supervisor macros, and input/output logic of VSE assembler
language programs must be checked for conformity to MVS conventions. A
one-for-one mechanical replacement is possible in many cases. The complexity
of the program and its use of supervisor functions is proportionate to the effort
required to convert the programs. Simple programs are usually easy to convert.
Registers are an important factor in performance. When a VSE program is to be
used under MVS, there may be mandatory changes in the use of registers
because of macro expansions. One way to handle this problem is to add
additional instructions to shift the MVS register contents to make them
correspond to the VSE register contents. However, this approach may cause
MVS to run slower because of unnecessary loading and storing of registers. The
alternative is to change the register usage within the program to conform to MVS
requirements, using the symbolic register notation through equates. Correct
register usage in complex programs prevents problems requiring extensive
programmer debugging effort.
 Copyright IBM Corp. 1998 
267