//JOBNAME JOB (ACCT),NAME,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) //********************************************************************* //ASMCL PROC N=TEMPNAME,AOPT=,APARM=,LOPT=, // MAC1='SYS1.MACLIB', // MAC2='SYS1.MACLIB', // MAC3='SYS1.MODGEN', // LLIB='MY.LOAD' <== Your target Load module library //ASM EXEC PGM=ASMA90, // PARM=('OBJ,NODECK,LC(32767),XREF(SHORT),TERM,RLD,ASA,&AOPT', // 'US(MAP,WARN(11)),SYSPARM(&APARM)') //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=&MAC1 // DD DISP=SHR,DSN=&MAC2 // DD DISP=SHR,DSN=&MAC3 //SYSUT1 DD UNIT=SYSALLDA,SPACE=(TRK,(80,20)) //SYSLIN DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(TRK,(30,15),RLSE), // DCB=(RECFM=FB,BLKSIZE=0,LRECL=80) //LKD EXEC PGM=IEWL,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,XREF,&LOPT') //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DISP=SHR,DSN=&LLIB(&N) // PEND //********************************************************************* //XXXXXXXX EXEC ASMCL,N=XXXXXXXX //ASM.SYSIN DD * LCLC &MDLNM &MDLNM SETC 'XXXXXXXX' SET THIS MODULE NAME &MDLNM TITLE 'TEST AND WORK ASSEMBLER PROGRAM' *---------------------------------------------------------------------* * HOUSEKEEPING PROCEDURE * * ===================================================== * *---------------------------------------------------------------------* * *----------------------------------* * * ENTRY PROCESSING * * *----------------------------------* &MDLNM CSECT , DEFINE CODE SECTION &MDLNM AMODE 31 DEFINE DEFAULT AMODE=31 &MDLNM RMODE 24 DEFINE DEFAULT RMODE=24 SAVE (14,12),,* SAVE CALLER REGISTERS USING &MDLNM,R12 DEFINE OUR BASE REGISTERS LA R12,0(,R15) LOAD OUR 1ST BASE ADDRESS LR R15,R13 SAVE CALLER SAVEAREA CNOP 0,4 INSURE FULL WORD BOUNDARY BAS R13,*+4+72 AROUND OUR SAVEAREA DC 18F'-1' OUR GPR SAVEAREA ST R15,4(,R13) SAVE CALLER SAVEAREA POINTER ST R13,8(,R15) SET BACK CHAIN FOR LINK TRACE B MAINPROC DO MAIN PROCESSING SPACE , * *----------------------------------* * * EXIT PROCESSING * * *----------------------------------* EXITPROC DS 0H L R13,4(,R13) LOAD CALLER SAVEAREA ST R15,16(,R13) PASS RETURN CODE TO CALLER LM R14,R12,12(R13) RESTORE CALLER REGISTERS OI 15(R13),X'01' SET RETURN INDICATION BSM 0,R14 RETURN TO CALLER EJECT , *********************************************************************** * MAIN LINE PROCESSING * * ===================================================== * * GR1 -- PSEUDO EXEC PARAMETER PLIST * * GR12 - BASE REGISTER * * GR13 - OUR REGISTER SAVEAREA * *---------------------------------------------------------------------* * * * * *********************************************************************** MAINPROC DS 0H L R1,0(,R1) LOAD EXEC PARM PLIST LH R0,0(,R1) LOAD STRING LENGTH LA R1,2(,R1) GR1 --> BEGINNING OF PARM + GR0 --> REMAINING LENGTH SPACE , * *----------------------------------* * * * * * ============================== * * * - * * * - * * *----------------------------------* SPACE , SLR 15,15 SET CC=0 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * I N T E R N A L S U B R O U T I N E S * *********************************************************************** *---------------------------------------------------------------------* * CNVRTX - CONVERT BINARY TO HEX-DECIMAL TEXT (REGISTER TYPE) * * CALL INTERFACE - * * GR0: FULL-WORD BINARY VALUE * * GR1: 8BYTES OUTPUT-AREA ADDRESS * * BAS 14,CNVRTX * *---------------------------------------------------------------------* CNVRTX DS 0H CONVERT GR0 TO HEX-DECIMAL LA 1,7(,1) LA 15,8 STC 0,0(,1) NI 0(1),X'0F' TR 0(1,1),CNVTRT2 SRL 0,4 BCTR 1,0 BCT 15,*-2-4-6-4-4 BR 14 CNVTRT2 DC CL16'0123456789ABCDEF' TRANS TABLE FOR HEX-CHARACTER *---------------------------------------------------------------------* EJECT , *********************************************************************** * DATA AREA (CONSTANTS) * *********************************************************************** DS 0D * *----------------------------------* * * MISCELLANEOUS * * *----------------------------------* SPACE , *********************************************************************** * DATA AREA * *********************************************************************** * *----------------------------------* * * MISCELLANEOUS * * *----------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA SPACE , * *----------------------------------* * * * * * ============================== * * * * * * * * *----------------------------------* SPACE , *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE *---------------------------------------------------------------------* DROP , FORGET ALL BASE REGISTER EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * LOCAL DSECTS * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * GLOBAL DSECTS * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * S/370, ESA/390 REGISTER EQUATES * *---------------------------------------------------------------------* YREGS , OS: REGISTER EQUATES *---------------------------------------------------------------------* * OS CONTROL BLOCKS * *---------------------------------------------------------------------* PRINT NOGEN END // //