You are on page 1of 52

Legac-e Education

Assembler Programming Workshop

Legac-e Education

Assembler Programming Workshop


A Legac-e Education Course

Module 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Title Assembler Introduction Data Areas Beginning and Ending Basic Decision Making Moving data around storage Non-VSAM queued I/O macros Load and Store Register contents DSECTs and Getting Storage More Decision Making Binary Integer Arithmetic Decimal Arithmetic Bit Manipulation Handling Sub-routines VSAM I/O macros

Appendix A Appendix B Appendix C

Assembler Instructions with page reference Machine Instructions Mnemonics with page reference Macros used, with page reference

Legac-e Education

Assembler Programming Workshop


A Legac-e Education Course

Objectives
At the completion of this course, students will know and understand how to use the IBM Assembler Programming Language. All students will be able to: Explain the assembly process Explain the general syntax and structure of the language Demonstrate the ability to start and end programs correctly Select and use appropriate instructions for moving data between registers and storage Select and use appropriate instructions for moving data around storage Use appropriate instructions to alter the logic flow of a program. Perform binary integer arithmetic Perform decimal arithmetic Perform bit manipulation Execute non-VSAM queued technique I/O macros. Pass control between sub-routines Perform VSAM ESDS I/O operations

Legac-e Education

Assembler Programming Workshop


A Legac-e Education Course

Course documentation
All Legac-e designed to intended to material by course. Education course documentation is complement the course, and is not be used as stand alone reference those who have not attended the

This course is designed and produced by KMS-IT Limited. If you require more information about our Legac-e Educations services, please contact: Legac-e Education 228 Abbeydale Road South, Dore, Sheffield, South Yorkshire, UK. SL17 3LA Telephone (National) 0114 262 0933 Telephone (International) +44 114 262 0933 E-mail Website courses@legac-e.co.uk www.legac-e.co.uk

Legac-e Education

Assembler Programming Workshop


A KMS-IT Limited Course
Notice

All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photographic, or otherwise, without the prior permission of the copyright owners. Copyright Legac-e Education 2004, 2006 All registered or unregistered trademarks referenced in this material are the property of their respective owners.

Legac-e Education

Module 1 Assembler Introduction

Copyright Legac-e Education 2004, 2006

Legac-e Education

This is Version 2 of this document, produced in January 2006. This material has been produced by, and is the property of KMS-IT Limited, trading as Legac-e Education, irrespective of the elearning provider. Payment of a course fee entitles the subscriber to access to a single copy of both hardcopy and online material for the sole use of the subscriber. Copying of any of the material is prohibited except with the express permission of the authors.

Legac-e Education is a trade name of KMSIT Limited, whose registered address is: 228 Abbeydale Road South Dore Sheffield S17 3LA South Yorkshire UK Tel: +44 (0)114 262 0933 E-mail: enquiries@kmsitltd.co.uk KMS-IT Limited is registered in England and Wales, No 3767263

Legac-e Education

Module 1 - Assembler Introduction


Topics Page

Introduction ________________________________________________________1 Documentation and source code syntax______________________________2


The need for multiple documents________________________________________ 2
Instructions to the assembler___________________________________________________2 Machine code mnemonics _____________________________________________________2 Data area declarations ________________________________________________________2 Macro instructions ____________________________________________________________2

Additional documentation ______________________________________________ 4 Documentation location ________________________________________________ 4 Source code syntax ____________________________________________________ 6
Label _______________________________________________________________________6 Operation ___________________________________________________________________6 Operands ___________________________________________________________________8 Comments __________________________________________________________________8 Continuation _________________________________________________________________8

Assembly process _________________________________________________10


Overview _____________________________________________________________ 10 Assembly - Step 1 _____________________________________________________ 12 Program Bind - Step 2 _________________________________________________ 14 Executable code - Step 3_______________________________________________ 16

General Purpose Registers _________________________________________18


Register sizes_________________________________________________________ 18
24-bit addressing____________________________________________________________18 31-bit addressing____________________________________________________________18 64-bit addressing____________________________________________________________18

Register conventions __________________________________________________ 20

Relocatable Addressability _________________________________________22


Addressability components ____________________________________________ 24
Base register _______________________________________________________________24 Displacement _______________________________________________________________24

An internal representation _____________________________________________ 26 Establishing addressability ____________________________________________ 28


Assembly time ______________________________________________________________28 Run time ___________________________________________________________________28

Copyright Legac-e Education 2004, 2006

Legac-e Education Topics Page

Practical example _____________________________________________________ 30 Multiple base registers ________________________________________________ 32 Instruction Notation ___________________________________________________ 34

z/OS 1.6 Sample Assembly Procedure_______________________________38

Copyright Legac-e Education 2004, 2006

Legac-e Education

Introduction
The first module of the "Assembler Programming Workshop" sets the scene in which the IBM Assembler Language operates. The main topics covered are: Documentation sources Source code syntax Assembly Process General Purpose Registers Relocatable addressability

Module 1 - Assembler Introduction

Page 1

Legac-e Education

Documentation and source code syntax


With high level programming languages such as COBOL and PL/I it is common to employ only two manuals, a Users Guide explaining ho wto do certain tasks, and a Language Reference Manual explaining the specific syntax and structure of the language. The need for multiple documents Assembler Programming demands a greater understanding of the hardware infrastructure and operation as the instructions are part of the hardware. The source input to the assembler is likely to contain different types of statements, such as: Instructions to the assembler Machine code mnemonics Data area declarations Macro instructions

The definitions of these statement types are spread across a number of manuals, some of those relevant to z/OS are listed opposite. Instructions to the assembler SC26-4940 - High Level Assembler Language Reference Machine code mnemonics z/Architecture Principles of Operation manual (SA22-7832) describes the actual instructions and how they work. Data area declarations SC26-4940 - High Level Assembler Language Reference Macro instructions There may be a variety of manuals depending upon the type of macro required. The most common macro manuals are: SC26-7408 DFSMS Macro Instructions for Data Sets.

Page 2

Module 1 - Assembler Introduction

Legac-e Education

Source Code
Mnemonic Machine Instructions. (See Principles of Operation SA22-7832) Data Definitions. (See High Level Assembler Language Reference SC26-4940)

AP

CLC

LM

DC

GET

DS
DC B

Macros. (See DFSMS Macro Instructions for Data Sets. C L OS SC26-7408) E Instructions to the Assembler. (As per Data Definitions above.)

E OP

START

RG TO L

END
11

Copyright Legac-e Education, 2004, 2005

Module 1 - Assembler Introduction

Page 3

Legac-e Education Additional documentation These manuals may also be useful. For supervisor service macros such as CALL, LINK, STORAGE etc, two manuals will prove useful: z/OS MVS Programming: Assembler Services Reference, Vol. 1 (SA22-7606) z/OS MVS Programming: Assembler Services Reference, Vol. 2 (SA22-7607) If running on non-z/architecture and/or OS/390: ESA/390 Principles of Operation (SA22-7201) if running a machine other than a z/8nn or z/9nn. OS/390 DSFSMS/MVS Macro Instructions for Data Sets (SC26-7337) OS/390 MVS Programming: Assembler Services Reference (GC28-1910) Documentation location It is reasonable to assume that each installation would have its own copy of the relevant documentation. Product licensing normally provides for one hard-copy, and a soft-copy CD. If the documentation cannot be found or additional copies are required, it is useful to note that nearly all manuals are in Adobe Acrobat (.PDF) format and are obtainable from the IBM WEB site. The foil opposite indicates the link process to find the manual library on the WEB.

Page 4

Module 1 - Assembler Introduction

Legac-e Education

Documentation location
www.ibm.com Products & Services Servers - Enterprise Library Select system environment

Copyright Legac-e Education, 2004, 2005

13

Module 1 - Assembler Introduction

Page 5

Legac-e Education Source code syntax The rules governing assembler source code date from the 1960s when source code was input via punched cards. In some ways the rules are similar to those which applied to JCL at that time, especially with regard to catalogue procedures. Essentially each source statement is an 80-byte record, with columns 73-80 reserved for sequence numbers. Statements comprise 5 areas, i.e. Label Operation Operands Comments

Label The label field if required begins in column 1, and can be up to 8 characters long. If a label is not required the label area must be blank. Labels can be composed of alphanumeric characters or national symbols, but cannot start with a number. Operation This will be separated from the label field and operands field by blanks. The operation will be one of: A machine code mnemonic An instruction to the assembler A macro instruction name

Convention has it that the operation field will start in column 10.

Page 6

Module 1 - Assembler Introduction

Legac-e Education

Source code syntax


80 Characters or bytes in length

MYPGM

CSECT STM 14,12,12(13)

SAVE REGISTERS

Operation is mandatory and has a blank either side of it. Label is optional, if coded it must begin in column 1. If omitted column 1 must be blank. A name cannot exceed 8 characters. Name can consist of Alphanumeric & National characters.
Copyright Legac-e Education, 2004, 2005 14

Module 1 - Assembler Introduction

Page 7

Legac-e Education Operands The number and type of operands will vary according to the operation. Machine code mnemonics may have up to three operands. Macro instructions may have many operands depending upon the complexity of the macro function. Operands will be separated by commas, and the first blank in the operands field will be treated as the end of the operands. Where possible convention dictates that operands start in column 16. Comments To aid understanding of the code, particularly from a maintenance perspective it is recommended that comments are liberally applied throughout the assembler source. There may be installation standards pertinent to comments, if not a comment can start in any column but are often found from either column 35 or 40 onwards. Continuation There will be occasions, invoking macros for instance, when all the operands may not fit within the 71 bytes available. Statements can be continued by coding a non-blank character in column 72, and starting the remaining operands in column 16.

Page 8

Module 1 - Assembler Introduction

Legac-e Education

Continuation
80 Characters or bytes in length

SYSIN

DCB

DSORG=PS,DDNAME=SYSIN,MACRF=GM, * LRECL=80,EODAD=QUIT

Non-blank character in column 72.

Rest of operands start in column 16 on next statement.

Copyright Legac-e Education, 2004, 2005

15

Module 1 - Assembler Introduction

Page 9

Legac-e Education

Assembly process
Overview The diagram opposite illustrates the process of compiling (or assembling) source code into an executable program. The three steps represented by the middle column of the diagram are: Assembly (or compile) Program Bind (sometimes known as Link-Edit) Execution (or GO stage)

Each of these steps is described in more detail on the following pages.

Page 10

Module 1 - Assembler Introduction

Legac-e Education

Assembly Process
(SYSIN) Souce Code Assembly (PGM= ASMA90) (SYSPRINT) Assembly Listing

(SYSPRINT) Binder Listing

Program Binder (PGM=HEWL)

(SYSLIN) Object Code

(SYSLMOD) Load Module

Go via Program Fetch


Copyright Legac-e Education, 2004, 2005

(SYSLIB) Sub-routines
6

Module 1 - Assembler Introduction

Page 11

Legac-e Education Assembly - Step 1 This is usually the first step, although CICS programs may require a preprocessor step ahead of this. The aim of this step is to convert the input source code to machine code format. While this step produces machine code, it does not produce executable code. Inputs to the assembly step will be: SYSIN SYSLIB - primary input, the location of the source code to be compiled. - Macro or copy book libraries required by the assembly.

Outputs from the assembly step will be: SYSPRINT SYSLIN - Listing of the assembled source - Object module to be input to the program binder

Ideally a condition code of zero, i.e. STEP WAS EXECUTED COND CODE 0000, will be issued by this step. Any condition code greater than 4 must be investigated. A condition code of 4 may not be serious, it may simply be warnings from embedded macros. The DD statement definitions can be checked in "z/OS Sample Assembly Procedure" later in this module, which contains the z/OS 1.3 assembly procedure as supplied by IBM.

Page 12

Module 1 - Assembler Introduction

Legac-e Education

Assembly Results
Input + A listing with diagnostics. Macro Expansions & XREF Object code: ESD Machine Code Data Constants. This is not executable.
Copyright Legac-e Education, 2004, 2005 7

Cond Code 8> Cond Code 0

47F0F05808E6E2C8D6D7 F14040000000000000000 000000000000000000000

Module 1 - Assembler Introduction

Page 13

Legac-e Education Program Bind - Step 2 Program Bind is the modern term for what was historically known as the LinkEdit step. The function of this step is to produce an executable routine. This process includes the resolution of any external references, i.e. calls or links to other modules, which may form part of a larger program. The entry point of the program will also be established by this process. Inputs to the program binder step will be: SYSLIN SYSLIB Anyname - Primary input, the location of the source code to be compiled - Libraries searched for implicit includes (unless PARM=NCAL) - Own library explicitly mentioned on an INCLUDE statement

Outputs from the program binder step will be: SYSLMOD SYSPRINT SYSUT1 - Library to contain executable program - Listing of the bound program plus input control statements - Work area

Ideally a condition code of zero, i.e. STEP WAS EXECUTED COND CODE 0000, will be issued by this step. Any condition code greater than 4 must be investigated. The DD statement definitions can be checked in "z/OS Sample Assembly Procedure" later in this module, which contains the z/OS 1.6 assembly procedure as supplied by IBM.

Page 14

Module 1 - Assembler Introduction

Legac-e Education

The Link or Bind Results


A listing with diagnostics. Input Statements Module Map & XREF Cond Code 0 47F0F05808E6E2C8D6D7 F14040000000000000000 000000000000000000000
8

Cond Code 8>

Executable module or program stored in a library. This should be executable code.

Copyright Legac-e Education, 2004, 2005

Module 1 - Assembler Introduction

Page 15

Legac-e Education Executable code - Step 3 This is the resultant module or program produced by the Program Binder, and stored somewhere on the system. Where the module (program) is stored and how it is invoked will be dependent upon its usage. Utility programs, such IEBGENER, IEBPTPCH, and IEFBR14 typically reside in the default system load library called SYS1.LINKLIB. Normal application batch modules or programs are likely to reside in a private load library, and will usually be invoked via a JCL EXEC statement. Application programs are often located at run time by including JOBLIB, or STEPLIB DD statements in the job or job step. These DD statements are not required however if the private libraries are added to member LNKLSTnn in SYS1.PARMLIB. (This member constructs the logical concatenation to SYS1.LINKLIB). If the module or program has a special function, i.e. it may be an exit to a system product, or a user-written supervisor call (SVC) it will need to reside an appropriate system area, such as the Link Pack Area (LPA). Member IEALPAnn of SYS1.PARMLIB defines the libraries, which constitute the LPA concatenation. To be LPA eligible modules require special attributes such as being reentrant, or RENT in Program Binder terms. Such programs cannot modify themselves and if they need to store or amend data, that data has to be outside of the module itself.

Page 16

Module 1 - Assembler Introduction

Legac-e Education

Executable Code
Typically stored in system load library like:
SYS1.LINKLIB

Or a private library like:


PROD.BATCH.LOADLIB

Accessible either through JOBLIB / STEPLIB, or the LNKLST.


//JOBLIB DD DSN=PROD.BATCH.LOADLIB member LNKLST00 in SYS1.PARMLIB

In some circumstances it will be LPA eligible.


member IEALPAxx in SYS1.PARMLIB
Copyright Legac-e Education, 2004, 2005 9

Module 1 - Assembler Introduction

Page 17

Legac-e Education

General Purpose Registers


There are sixteen general purpose registers available to each processor, and all programs executing on that processor will use them. Register sizes On the original systems prior to MVS/XA 24-bit addressing was all that was available, MVS/XA introduced 31-bit addressing, and the current z/Architecture and its z/OS operating system offer the capability to have 64-bit addressing. 24-bit addressing On 24-bit hardware the registers are four bytes (32 bits) in size. In this mode only 24-bit, the low order three bytes, of the register are used to contain a valid address. 31-bit addressing On 31-bit hardware the registers are four bytes (32 bits) in size. In this mode all four bytes of the register are used to contain a valid address, but the high order bit is reserved, hence 31 rather than 32-bit addressing. 64-bit addressing On 64-bit hardware the registers are eight bytes (64 bits) in size. In 64-bit mode all eight bytes of the register are used to hold a valid address. In order to maintain compatibility with the older systems, only the low order four bytes of the register are used if the module or program is compiled with AMODE(24) or AMODE(31).

Page 18

Module 1 - Assembler Introduction

Legac-e Education

General Purpose Registers


24-bit addressing
compatibility

31-bit addressing

64-bit addressing

Copyright Legac-e Education, 2004, 2005

27

Module 1 - Assembler Introduction

Page 19

Legac-e Education Register conventions Within the assembler programming arena a convention has been established for register usage. This convention is almost universal, although some IBM system routines do not use register 12 as their base register. The convention is: R0 R1 R13 R14 R15 - used for passing a single parameter - used for passing a parameter list - contains the address of the register save area - contains the return address from a called sub-routine - contains the entry address of a called sub-routine

Irrespective of the above convention any register can be used for any purpose, although not following the convention will invite trouble if either implicit or explicit calls to other routines are made. Note that some instructions, such as TRT, can corrupt registers. Note also that the use of register zero may be restricted by some instructions and result in a no-operation condition. (This is not a failure as the program will continue to run.)

Page 20

Module 1 - Assembler Introduction

Legac-e Education

Register Conventions.
0 1
Pass single parameter Addr of Parameter List

8 9 10 11 12 13 14 15
Base Register Address of Save Area Return Address Entry Address
28

2 Can be corrupted by TRT 3 4 5 6 7

Copyright Legac-e Education, 2004, 2005

Module 1 - Assembler Introduction

Page 21

Legac-e Education

Relocatable Addressability
If programs were not relocatable they would always occupy the same area of storage. Managing such an environment would either significantly restrict the number of concurrent program executions, or increase the maintenance overhead when programs and operating systems changed. Relocatability allows a module or program to be loaded into different storage locations at different times, yet function as intended. Relocatability requires that each storage address used within a program be broken into two components: Base register Displacement

This combination, described in more detail in a moment, will definitely apply to the module itself, and may also be used as a technique to access areas of storage beyond the addressing boundaries of the module. In high level languages such as COBOL and PL/I this relocatable concept is transparent to the programmer, but this is not the case in Assembler.

Page 22

Module 1 - Assembler Introduction

Legac-e Education

How is relocatability achieved?


A base register is established. There will be at least 1 base register for the program depending upon its size. Additionally specific areas of memory, such as arrays, may require separate base registers for ease of data manipulation. In high level languages this is dealt with by the compiler.
Copyright Legac-e Education, 2004, 2005 18

Module 1 - Assembler Introduction

Page 23

Legac-e Education Addressability components As mentioned earlier relocatability requires that each storage address used within a program be broken into two components: Base register Displacement

Base register This is the anchor for relative addressing and logically this register contains the address of the first byte of storage used for subsequent relative addressing. In simple terms, for a program the base register points to a location toward the start of the program, with the instructions and data areas within the program being referenced via displacements relative to the address in the base register. The base register will be identified by a value in the range 0 to 9 or A to F, as there are only sixteen General Purpose Registers available. This is discussed in the next topic. Displacement The displacement is the relative offset to be added to the address in the base register to locate the particular area of storage. Remember that the base register points to the first byte and hence the first byte is at offset zero. The maximum offset value is 4095, or hexadecimal FFF.

Page 24

Module 1 - Assembler Introduction

Legac-e Education

Addressability Components
All instructions which access memory (storage) will have one or more components in the form:

BDDD

A single character in the range 0 - 9 or A - F, which represents the base register.

A number in the range 0 4095 (cannot be greater than XFFF), which is the offset from the base.
19

Copyright Legac-e Education, 2004, 2005

Module 1 - Assembler Introduction

Page 25

Legac-e Education An internal representation The foil opposite illustrates how a particular MoVe Character (MVC) instruction has been assembled. The first byte, D2, is the machine operation code for the MVC instruction. The second byte, 07, is the length, minus 1, of the field to be moved. The next two bytes hold the address of the target field in BDDD format. The last two bytes hold the address of the source field in BDDD format.

Page 26

Module 1 - Assembler Introduction

Legac-e Education

An internal representation
This represents a MoVe Character (MVC) instruction as it might appear after assembly.

D2 07 C A30 C 420
Second operands displacement, X420 beyond the address in Register 12. Second operands base register. Register 12.
20

First operands base register. Register 12. First operands displacement, XA30 beyond the address in Register 12.

Copyright Legac-e Education, 2004, 2005

Module 1 - Assembler Introduction

Page 27

Legac-e Education Establishing addressability Establishing addressability requires two actions, which are relevant at two separate times: Assembly time Run time

Assembly time At assembly time it is necessary to inform the assembler which register is to be used as the base register. The assembler also needs to know what the initial displacement is. These two requirements are resolved with the USING statement. Run time At run time the system needs to know where in storage the code or data area resides. The BASR instruction is usually used to establish the base for a program or module.

Page 28

Module 1 - Assembler Introduction

Legac-e Education

Program addressability - 1
The programmer must select a GPR to act as the base register for addressability. Convention is to use GPR 12.

000000 UTILPGM 000000 000002 000002

Sets IC to zero. START 0 BASR 12,0 USING *,12 MVC IN(8),B Puts address of next instruction into GPR 12.

Tells the assembler to use 12 as the base register.

Copyright Legac-e Education, 2004, 2005

21

Module 1 - Assembler Introduction

Page 29

Legac-e Education Practical example The diagram opposite illustrates how the system calculates storage addresses by using the combination of base register and displacement. The big limitation of course is the maximum displacement of X'FFF', which might imply that a program could not be larger than 4096 bytes in size.

Page 30

Module 1 - Assembler Introduction

Legac-e Education

Program addressability - 2
BASR 12,0 D207CA30C420 MVC PTIME,MTIME

Base + Offset MTIME DC CL8

00000200 R12 is Base Register. XC30

X620
PTIME DC CL8

F1F27AF0F87AF0F0

4040404040404040
22

Copyright Legac-e Education, 2004, 2005

Module 1 - Assembler Introduction

Page 31

Legac-e Education Multiple base registers To cater for large modules or programs, especially those which cannot be sub-divided into discrete modules, multiple base registers can be used. Opposite is a piece of code demonstrating how multiple base registers can be set up. In this instance 3 base registers are being established which allows the program to be 12K in size, (4096 times 3).

Page 32

Module 1 - Assembler Introduction

Legac-e Education

Multiple base registers


If the program is likely to be greater than 4096 bytes in size, either code it in multiple CSECTs, or use more than 1 base register. 000000 000000 000002 000006 00000A 00000E 000012 000018 00001A 000024 58ABC008 47F0C010 00001002 00002002 D207C018C022 07FE 40404040 E3C5D9D9 UTILPGM START BASR USING LM B DC DC MVC BR DC DC END 0 12,0 *,12,10,11 10,11,BASES MAIN A(BASE+4096) A(BASE+8192) IN(8),B 14 CL10 CL5TERRY
23

BASE BASES MAIN IN B

Copyright Legac-e Education, 2004, 2005

Module 1 - Assembler Introduction

Page 33

Legac-e Education Instruction Notation The illustration opposite is included as an indication of how other documentation might discuss or present instruction formats. The 'Principles of Operation' manual usually has diagrams of this type as part of the definition of each instruction. This is not however indicative of how instruction would necessarily be coded.

Page 34

Module 1 - Assembler Introduction

Legac-e Education

Instruction notation
MVC d1(L1,b1),d2(b2) OP L b1 d1 b2 d2 (SS)

Operation for MVC this is D2 Length

Base Register first operand

Base Register second operand Displacement of second operand


24

Displacement of first operand

Copyright Legac-e Education, 2004, 2005

Module 1 - Assembler Introduction

Page 35

Legac-e Education Potential source formats This illustration offers two examples of how instructions might be coded. At the top of the illustration is the sample machine code for the MVC instruction used in earlier examples. If the two storage areas used by the instruction are outside of the current module, then it might be necessary to code the MVC instruction in the form: MVC 2608(8,12),1056(12)

If however the two storage areas used by the instruction reside within the current module, it is easier to assign labels to those storage areas, and use the labels in the instruction thus: MVC PTIME,MTIME

The later is arguably more readable than the former, and hence more easily understood.

Page 36

Module 1 - Assembler Introduction

Legac-e Education

Potential source formats


D207CA30C420
Our previous MoVe Character (MVC) Instruction.

MVC 2608(8,12),1056(12)
The same instruction, in non-relocatable source form.

MVC PTIME,MTIME
The same instruction, in relocatable source form.
Copyright Legac-e Education, 2004, 2005 25

Module 1 - Assembler Introduction

Page 37

Legac-e Education

z/OS 1.6 Sample Assembly Procedure


000010 //ASMACL 000020 //* 000030 //*** 000040 //* 000050 //* THIS PROCEDURE RUNS THE HIGH LEVEL ASSEMBLER, 000060 //* LINK-EDITS THE NEWLY ASSEMBLED PROGRAM. 000070 //* 000080 //C 000090 //SYSLIB 000100 //SYSUT1 000110 // 000120 //SYSPRINT DD 000130 //SYSLIN 000140 // 000150 // 000160 //L 000165 // 000170 //SYSLIN 000180 // 000190 //SYSLMOD 000200 // 000210 //SYSUT1 000220 // 000230 //SYSPRINT DD DD DD DD DD DD EXEC PGM=ASMA90 DD DD DSN=SYS1.MACLIB,DISP=SHR DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND), UNIT=VIO,DCB=BUFNO=1 SYSOUT=* DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND), UNIT=VIO,DISP=(MOD,PASS), DCB=(BLKSIZE=3040,LRECL=80,RECFM=FBS,BUFNO=1) EXEC PGM=HEWL,PARM='MAP,LET,LIST,NCAL', COND=(8,LT,C) DSN=&&OBJ,DISP=(OLD,DELETE) DDNAME=SYSIN DISP=(,PASS),UNIT=SYSDA,SPACE=(CYL,(1,1,1)), DSN=&&GOSET(GO) DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND), UNIT=VIO,DCB=BUFNO=1 SYSOUT=* ASMACL PROC

Page 38

Module 1 - Assembler Introduction

You might also like