Introduction To HLASM Questions and Answers
Introduction To HLASM Questions and Answers
Example 1
**********************************************************************
* SIMPLE HELLO WORLD PROGRAM
* Copyright IBM UK LTD 2013
**********************************************************************
*
* MAIN PROGRAM STARTS HERE
*
EX1 CSECT
EX1 AMODE 31
EX1 RMODE 24
* USUAL PROGRAM SETUP <- FIX THIS COMMENT
STM 14,12,12(13)
BALR 12,0
USING *,12
*
* ********************************************************************
* WRITE YOUR CODE HERE
* MOVE THE DATA IN_STRING TO OUT_STRING
* HERE...
* ********************************************************************
*
LA 5,WTO_AR
WTO TEXT=(5)
LMRET LM 14,12,12(13)
*
* ********************************************************************
* WRITE YOUR CODE HERE
* THE RETURN CODE OF THE PROGRAM IS HANDED BACK IN REGISTER 15
* PROVIDE A RETURN CODE OF 15
* HERE...
* ********************************************************************
*
BR 14
* ********************************************************************
* END OF PROGRAM
* ********************************************************************
IN_STRING DC C'HELLO WORLD!'
WTO_AR DC AL2(L'OUT_STRING)
OUT_STRING DS CL(L'IN_STRING)
LTORG ,
END
Example 2
**********************************************************************
* SIMPLE ADDRESSING LOOP PROGRAM
* Copyright IBM UK LTD 2013
**********************************************************************
*
* MAIN PROGRAM STARTS HERE
*
EX2 CSECT
Example 3
**********************************************************************
* DOT-PRODUCT PROGRAM
* Copyright IBM UK LTD 2013
**********************************************************************
*
* MAIN PROGRAM STARTS HERE
*
EX3 CSECT
EX3 AMODE 31
EX3 RMODE 24
* USUAL PROGRAM SETUP
STM 14,12,12(13)
Example 4
**********************************************************************
* SUBROUTINE PROGRAM
* Copyright IBM UK LTD 2013
**********************************************************************
*
* MAIN PROGRAM STARTS HERE
Answer 1
**********************************************************************
* SIMPLE HELLO WORLD PROGRAM
* Copyright IBM UK LTD 2013
**********************************************************************
*
* MAIN PROGRAM STARTS HERE
*
EX1 CSECT
Answer 2
**********************************************************************
* SIMPLE ADDRESSING LOOP PROGRAM
* Copyright IBM UK LTD 2013
**********************************************************************
*
* MAIN PROGRAM STARTS HERE
*
EX2 CSECT
EX2 AMODE 31
EX2 RMODE 24
* USUAL PROGRAM SETUP
STM 14,12,12(13)
BALR 12,0
USING *,12
*
* SAVE REGISTER 1 SOMEWHERE BECAUSE IT MAY BE USED BY WTO
LR 3,1
*
WTO 'HELLO'
LA 5,WTO_AR 5 -> WTO BUFFER
*
* RESTORE THE SAVED VALUE TO REGISTER 1
Answer 3
**********************************************************************
* SIMPLE ADDRESSING LOOP PROGRAM
* Copyright IBM UK LTD 2013
**********************************************************************
*
* MAIN PROGRAM STARTS HERE
*
EX3 CSECT
EX3 AMODE 31
EX3 RMODE 24
* USUAL PROGRAM SETUP
STM 14,12,12(13)
BALR 12,0
USING *,12
LA 5,0 INITIALISE INDEX REGISTER
LA 6,0 INITIALISE ACCUMULATOR
LOOP L 3,A_ARR(5) LOAD ARRAY A ELEMENT
L 4,B_ARR(5) LOAD ARRAY B ELEMENT
MR 2,4 MULTIPLY RESULT
AR 6,3 ADD RESULT TO ACCUMULATOR
AHI 5,4
CHI 5,16
BL LOOP BRANCH IF NOT AT END OF ARRAY
ST 6,RESULT STORE FINAL RESULT
LMRET LM 14,12,12(13)
*
Answer 4
**********************************************************************
* SUBROUTINE PROGRAM
* Copyright IBM UK LTD 2013
**********************************************************************
*
* MAIN PROGRAM STARTS HERE
*
EX1 CSECT
EX1 AMODE 31
EX1 RMODE 24
* USUAL PROGRAM SETUP <- FIX THIS COMMENT
STM 14,12,12(13)
BALR 12,0
USING *,12
*
* ********************************************************************
* WRITE YOUR CODE HERE
* CALL THE SUBROUTINE MYSUB
LA 1,BUFLEN
LA 2,INBUF
LA 3,OUTBUF
LA 15,MYSUB
BALR 14,15
* ********************************************************************
*
LA 5,WTO_AR
WTO TEXT=(5)
LMRET LM 14,12,12(13)
XR 15,15
BR 14
* ********************************************************************
* MY SUBROUTINE
* SPECIFICATION:
* THIS SUBROUTINE SHOULD COPY THE AMOUNT OF BYTES SPECIFIED IN
* REGISTER 1 AT THE ADDRESS SPECIFIED IN REGISTER 2 TO THE BUFFER
* SPECIFIED IN REGISTER 3
* THE ROUTINE SHOULD USE AN MVCL INSTRUCTION IN ORDER TO COPY THE
* DATA. INFORMATION ON HOW TO USE THIS CAN BE FOUND IN POPS.
* INPUTS:
* REGISTER 1 -> LENGTH OF DATA TO BE COPIED
* REGISTER 2 -> POINTER TO INPUT BUFFER
* REGISTER 3 -> POINTER TO OUTPUT BUFFER
* REGISTER 14 -> RETURN ADDRESS
* OUTPUTS:
* ALL REGISTERS ARE RESTORED
* ********************************************************************