CS269 – IBM 360 Assembler – Program 5

Well, just to continue with the brain dump from yesteryear, here is program number 5 for the USM CS269 Intro to IBM Assembly Language Class.  Unlike program 2 posted here, program #5 will run unmodified in the PC DOS version of ASSIST.  I bet you’re thinking “Why would I even want to do this?”  I’m probably think the same thing.  Putting it here though at least might give me the opportunity to throw out the paper version.

 t
00001 $JOB ASSIST IPF269 PHIL ST.JEAN
00002 *PROGRAM 5 DUE 3/19/81 CS269
00003 * THIS PROGRAM SIMULATES MULTIPLICATION AND DIVISION AS DESCRIBED
00004 * IN THE TEXT FOR CS269 SPR81 BY STRUBLE; ON PAGES
00005 * 70-71 AND 74-75.  THESE SIMULATIONS DEAL WITH
00006 * POSITIVE OPERANDS, AND IF ONE IS NEGATIVE, COMPLEMENT IT SO
00007 * THAT IT IS POSITIVE.
00008 * DIVISION IS ROUNDED ( IE INTEGER DIVISION )
00009 *
00010 * INPUT : AN ALGEBRAIC EXPRESSION WITH ONLY MULTIPLICATION AND
00011 *         DIVISION; NO PARENTHESIS.
00012 *
00013 * OUTPUT: THE EXPRESSION AND THE EVALUATED RESULT.
00014 *
00015 * REGISTERS: 1 - INDEX THROUGH CARD
00016 *            2,3 - REGISTERS FOR MULT. AND DIV.
00017 *            4 - LOOP COUNTER FOR SIMULATION OF MULT. AND DIV.
00018 *            5 - TEMP. TO TEST IF RIGHT BIT IS ZERO OR ONE
00019 *            8 - USED TO PUT THE DIVISOR IN CORRECT RELATION
00020 *            9 - STORES RESULT AFTER EACH OPERATION
00021 *           11 - COUNTS THE NUMBER OF NEGATIVES
00022 *
00100 PROG5    CSECT
00110          BALR  12,0
00120          USING *,12
00130 LOOP1    LA    11,0
00150          XREAD CARD,80
00160          BCR   4,14
00170          MVC   LINE+1(80),CARD
00180          LA    1,CARD
00190          XDECI 9,0(1)
00200          C     9,=F'0'
00210          BNL   LOOP2
00220          X     9,=X'FFFFFFFF'
00230          AL    9,=X'00000001'
00235          LA    11,1(11)
00240 LOOP2    MVC   OP(1),0(1)
00244          CLI   OP,C' '
00246          BE    DONE
00250          XDECI 3,1(1)
00260          C     3,=F'0'
00270          BNL   SKIP
00280          X     3,=X'FFFFFFFF'
00290          AL    3,=X'00000001'
00295          LA    11,1(11)
00300 SKIP     CLI   OP,C'/'
00310          BE    DIVIDE
00311          CLI   OP,C'*'
00312          BE    MULT
00313          XPRNT ERROR,18
00314          B     LOOP2
00320 *
00330 * MULTIPLICATION
00340 *
00350 MULT     LA    4,32
00360          LA    2,0
00370 LMULT1   LR    5,3
00380          N     5,=X'00000001'
00390          BC    8,LMULT2
00400          ALR   2,9
00410 LMULT2   SRDL  2,1
00420          BCT   4,LMULT1
00430          LR    9,3
00440          B     LOOP2
00450 *
00455 * DIVISION
00456 *
00460 DIVIDE   LA    2,0
00470          LA    4,32
00480          LR    8,3
00490          LR    3,9
00500 LDIV1    SLDL  2,1
00510          SLR   2,8
00520          CLR   2,8
00530          BNH   LDIV2
00540          ALR   2,8
00550          B     LDIV3
00560 LDIV2    AL    3,=X'00000001'
00570 LDIV3    BCT   4,LDIV1
00580          LR    9,3
00590          B     LOOP2
00600 *
00610 *
00620 DONE    N   11,=X'00000001'
00625         BC   8,NOCOMPL
00650          X     9,=X'FFFFFFFF'
00660          AL    9,=X'00000001'
00670 NOCOMPL  MVI   82(1),C'='
00680          XDECO 9,83(1)
00690          XPRNT LINE,81
00700          MVC   LINE+1(131),BLANK
00710          B     LOOP1
00715 *
00720 CARD     DS    CL80
00730 LINE     DC    CL1'0'
00740          DS    CL131
00750 BLANK    DC    131CL1' '
00755 OP       DS   1F
00756 ERROR    DC   CL18'0ILLEGAL OPERATION'
00760          END   PROG5
00770 $ENTRY
00780 4*3
00790 16/2
00800 2*3*4/10
00810 -5*4/-2
00820 -10/3
00830 84/2/3
.rdymsg on
R; T=0.01/0.12 18:53:08
.assist

***  NO   STATEMENTS FLAGGED -  NO   WARNINGS,  NO   ERRORS

4*3 =          12

16/2 =           8

2*3*4/10 =           2

-5*4/-2 =          10

-10/3 =          -3

84/2/3 =          14

*** EXECUTION:    2241 INSTRUCTIONS EXECUTED ***

*** AM004 - NORMAL USER TERMINATION BY RETURN ***
R; T=1.29/3.15 18:53:43
.logoff
CONNECT= 01:29:49 VIRTCPU= 000:30.30 TOTCPU= 001:53.24
LOGOFF AT 18:54:07 EDT THURSDAY 03/19/81

 CAPS ONLINE