Sample Assembly Language Program - Run Under OS | CPSC 3121, Lab Reports of Programming Languages

Material Type: Lab; Professor: Bosworth; Class: Assembly Lang Programming 1; Subject: Computer Science; University: Columbus State University; Term: Summer 2008;

Typology: Lab Reports

Pre 2010

Uploaded on 08/04/2009

koofers-user-la5
koofers-user-la5 🇺🇸

9 documents

1 / 3

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
SAMPLE ASSEMBLY LANGUAGE PROGRAM RUN UNDER OS
//KC02263R JOB (KC02263),'ED BOZ',REGION=3M,CLASS=A,MSGCLASS=H,
// NOTIFY=KC02263,MSGLEVEL=(1,1)
//*
//*
//*
//FFFPROC JCLLIB ORDER=(TSOEFFF.STUDENT.PROCLIB.ASM)
//JESDS OUTPUT PAGEDEF=V06483,JESDS=ALL,DEFAULT=Y,CHARS=GT15
//STEP1 EXEC PROC=HLLASM
//ASM.SYSIN DD *
LAB2 CSECT , COMMA REQUIRED IF COMMENT ON THIS STMT
**********************************************************************
* FUNCTION - READ NUMBERS, ONE PER LINE, AND PRINT THE SUM
* REFERENCE: PAGES 166 – 175, 216 OF ABEL’S BOOK
* INPUTS - STANDARD "CARD DECK" INPUT
* OUTPUT - THE STANDARD PRINTER
* ENTRY - LABX
* PARMS - NONE
* NORMAL EXIT(S) - RETURN TO CALLER
* ERROR EXIT(S) - NONE
* MACROS USED - SAVE, RETURN, YREGS, DCB, GET, PUT, OPEN, CLOSE
* EXTERNAL CALLS - NONE
* PROGRAMMER: E. L. BOSWORTH LOCATION: CSU DATE: JULY 2, 2008
**********************************************************************
* STANDARD LINKAGE FOR A REUSABLE OS/MVS CSECT
**********************************************************************
SAVE (14,12) SAVE CALLER'S REGS
BALR R12,0 ESTABLISH
USING *,R12 ADDRESSABILITY
LA R2,SAVEAREA POINT TO MY LOWER-LEVEL SA
ST R2,8(,R13) FORWARD-CHAIN MINE FROM CALLER'S
ST R13,SAVEAREA+4 BACK-CHAIN CALLER'S FROM MINE
LR R13,R2 SET 13 FOR MY SUBROUTINE CALLS
********************** BEGIN LOGIC *********************************
*
* SET UP THE INPUT AND OUTPUT AND PRINT HEADERS
*
STARTUP OPEN (FILEIN,(INPUT)) OPEN THE STANDARD INPUT
OPEN (PRINTER,(OUTPUT)) OPEN THE STANDARD OUTPUT
PUT PRINTER,PRHEAD PRINT HEADER
L R3,=F’0’ CLEAR R3 TO STORE THE SUM
GET FILEIN,RECORDIN GET THE FIRST RECORD, IF THERE
*
* READ AND PROCESS LOOP
*
A10LOOP MVC DATAPR,RECORDIN MOVE INPUT RECORD
PUT PRINTER,PRINT PRINT THE RECORD
PACK PACKIN,FIELD01 CONVERT DIGITS INPUT TO PACKED
CVB R4,PACKIN CONVERT THE NUMBER TO BINARY
AR R3,R4 ACCUMULATE THE SUM IN REGISTER 3
GET FILEIN,RECORDIN GET THE NEXT RECORD
B A10LOOP GO BACK AND PROCESS
*
Page 1 of 3 pages Revised July 2, 2008
pf3

Partial preview of the text

Download Sample Assembly Language Program - Run Under OS | CPSC 3121 and more Lab Reports Programming Languages in PDF only on Docsity!

//KC02263R JOB (KC02263),'ED BOZ',REGION=3M,CLASS=A,MSGCLASS=H,

// NOTIFY=KC02263,MSGLEVEL=(1,1)

//FFFPROC JCLLIB ORDER=(TSOEFFF.STUDENT.PROCLIB.ASM)

//JESDS OUTPUT PAGEDEF=V06483,JESDS=ALL,DEFAULT=Y,CHARS=GT

//STEP1 EXEC PROC=HLLASM

//ASM.SYSIN DD *

LAB2 CSECT , COMMA REQUIRED IF COMMENT ON THIS STMT

* FUNCTION - READ NUMBERS, ONE PER LINE, AND PRINT THE SUM

* REFERENCE: PAGES 166 – 175, 216 OF ABEL’S BOOK

* INPUTS - STANDARD "CARD DECK" INPUT

* OUTPUT - THE STANDARD PRINTER

* ENTRY - LABX

* PARMS - NONE

* NORMAL EXIT(S) - RETURN TO CALLER

* ERROR EXIT(S) - NONE

* MACROS USED - SAVE, RETURN, YREGS, DCB, GET, PUT, OPEN, CLOSE

* EXTERNAL CALLS - NONE

* PROGRAMMER: E. L. BOSWORTH LOCATION: CSU DATE: JULY 2, 2008

* STANDARD LINKAGE FOR A REUSABLE OS/MVS CSECT

SAVE (14,12) SAVE CALLER'S REGS

BALR R12,0 ESTABLISH

USING *,R12 ADDRESSABILITY

LA R2,SAVEAREA POINT TO MY LOWER-LEVEL SA

ST R2,8(,R13) FORWARD-CHAIN MINE FROM CALLER'S

ST R13,SAVEAREA+4 BACK-CHAIN CALLER'S FROM MINE

LR R13,R2 SET 13 FOR MY SUBROUTINE CALLS

********************** BEGIN LOGIC *********************************

* SET UP THE INPUT AND OUTPUT AND PRINT HEADERS

STARTUP OPEN (FILEIN,(INPUT)) OPEN THE STANDARD INPUT

OPEN (PRINTER,(OUTPUT)) OPEN THE STANDARD OUTPUT

PUT PRINTER,PRHEAD PRINT HEADER

L R3,=F’0’ CLEAR R3 TO STORE THE SUM

GET FILEIN,RECORDIN GET THE FIRST RECORD, IF THERE

* READ AND PROCESS LOOP

A10LOOP MVC DATAPR,RECORDIN MOVE INPUT RECORD

PUT PRINTER,PRINT PRINT THE RECORD

PACK PACKIN,FIELD01 CONVERT DIGITS INPUT TO PACKED

CVB R4,PACKIN CONVERT THE NUMBER TO BINARY

AR R3,R4 ACCUMULATE THE SUM IN REGISTER 3

GET FILEIN,RECORDIN GET THE NEXT RECORD

B A10LOOP GO BACK AND PROCESS

* END OF INPUT PROCESSING

* NOTE: HOW TO OUTPUT A BINARY NUMBER FROM A REGISTER.

* THERE ARE THREE STEPS NECESSARY IF USING THE UNPACK INSTRUCTION

* 1. USE CVD TO CONVERT THE BINARY TO PACKED DECIMAL. STORE IN MEMORY.

* 2. USE THE UNPACK INSTRUCTION, UNPK, TO CONVERT TO EBCDIC.

* UNFORTUNATELY, UNPK MISHANDLES THE LAST EBCDIC CHARACTER.

* 3. FIX THE ZONE OF THE LAST CHARACTER TO BE THE CODE FOR A DIGIT.

* EXAMPLE: R3 CONTAINS BINARY 0010 1010 (0X2A, OR DECIMAL 42)

* CVD PLACES P’042C’ IN PACKOUT

* UNPK CHANGES THIS TO F0 F4 C2, NOT F0 F4 F2 (CORRECT)

* MVZ FORCES THIS TO F0 F4 F2, THE CORRECT OUTPUT.

A90END CLOSE FILEIN

PUT PRINTER,ENDNOTE ANNOUNCE THE END OF INPUT DATA

CVD R3,PACKOUT CONVERT THE NUMBER TO PACKED

MVC PRINT,BLANKS CLEAR THE OUTPUT BUFFER

UNPK THESUM,PACKOUT PRODUCE THE FORMATTED NUMBER

MVZ THESUM+7(1),=X’F0’ CONVERT SIGN HALF-BYTE TO ‘F0’

MVC DATAPR,THESUM AND COPY TO THE PRINT AREA

PUT PRINTER,PRINT PRINT THE RESULT

CLOSE PRINTER

********************** END LOGIC *********************************

RETURN EQU * BRANCH TO HERE FOR NORMAL RETURN

L R13,SAVEAREA+4 POINT TO CALLER'S SAVE AREA

RETURN (14,12),RC=0 RESTORE CALLER'S REGS & RETURN

* WITH ZERO IN REGISTER 15

********************** DATA AREAS *********************************

SAVEAREA DC 18F'0' AREA FOR MY CALLEE TO SAVE & RESTORE MY REGS

YREGS

FILEIN DCB DDNAME=FILEIN, X

DSORG=PS, X

DEVD=DA, X

RECFM=FB, X

LRECL=80, X

EODAD=A90END, X

MACRF=(GM)

PRINTER DCB DDNAME=PRINTER, X

DSORG=PS, X

DEVD=DA, X

MACRF=(PM), X

LRECL=133, X

RECFM=FM