Final Exam Review Sheet
The Final Exam is 100 points long. There are also 10 points of extra-credit questions.
The test format will include multiple-choice and true-false questions, short answers and coding.
Look at the various quizzes we have had on these topics.
Standard Entry/Exit Linkage
Packed Decimal Numbers
Logical Instructions
Shift Instructions
TM instruction
Be able to code an instruction that will test specific bits
TR, TRT and EX instructions
Additional Character Instructions (IC, STC, ...)
Halfword Instructions
DSECTs
You should know what a DSECT is, how to code one and how to use one.
Macros
Run-time errors
Know the various kinds of SOCs we have discussed, their names and numbers and how each might occur
Old Stuff
Part I. True/False.
T F 1. The MVC instruction can move from 0 to 255 bytes. T F 2. An index register can be specified on the STM instruction. T F 3. The second operand of UNPK must address valid packed decimal data. T F 4. The following instruction will set the condition code to zero: CLC =C'A',=X'C1' T F 5. Both operands of the ZAP instruction must be valid packed decimal numbers or a data interrupt (0007) will occur. T F 6. The SRP instruction has two length fields, each of which is at most 16. T F 7. A CVB instruction may fail with a fixed-point divide exception (0009). T F 8. The following instruction will assemble without an error: LA 1,5000 T F 9. The ED and EDMK instructions set the condition code. T F 10. Decimal overflow cannot occur when one or more nonzero digits are shifted out during a right shift by an SRP instruction. T F 11. A specification error will occur if the multiplier length is equal to the multiplicand length in an MP instruction. T F 12. An addressability error can occur for both operands of an MVI instruction. T F 13. The significance indicator is always turned off after a field separator is encountered in the pattern. T F 14. Register 1 may or may not be set by execution of the ED instruction.
Part II. Encoding/Decoding.
Given the following assembler instruction or object code, encode or decode as requested. Write assembler instructions in decimal.
OBJECT CODE ASSEMBLER INSTRUCTION _______________________ PACK 18(5,3),6(7,9) FB54 9010 7025 ___________________________ FADE B001 E105 ___________________________ _______________________ ED 178(132,10),214(9) F0E1 D203 B1A5 ___________________________
Part III. Editing.
Use the given edit patterns and packed decimal field contents to determine the resulting edited field contents after the following EDIT instruction has been executed. Give the complete hexadecimal contents of each byte. The instructions are not cumulative. Assume original contents of each field for each question.
ED PATTERN,FLD1
PATTERN FLD1 EDITED RESULT X'5C20206B20212060' X'00036C' __________________________________ X'4020206B2120204B202060' X'0000875D' __________________________________
Part IV. SRP Instruction.
Use the following contents of FLD1 and the given SRP instructions to determine the complete contents of FIELD1 after the execution of the SRP instructions. Specify any error conditions which might occur.
FLD1 INSTRUCTION RESULT X'00345C' SRP FLD1(3),(64-1),3 ___________________________ X'0076837C' SRP FLD1(4),(64-3),5 ___________________________ X'0004545C' SRP FLD1(4),5,0 ___________________________
Part V. Program Interrupt.
Answer the following questions using the PSW AT ABEND, register contents, and memory contents given below. Give 'address' answers in hexadecimal.
PSW AT ABEND FFB50007 DC000232 R2 = 00000210 R3 = 00000260 R8 = 00000270 R9 = 00000220 R15 = 00000200 Address Contents ------ ----------------------------------------------------------------------- 000220 40125802 5012D503 50301231 FA633005 8006F960 30058003 47B0F010 4F206003 000240 4F408003 124447B0 FB941BAA 1BBBD203 80063005 5920BB98 47F0B218 002B013C 000260 00000102 4C000003 2400861D 1E1F2021 89045C3C 1C184860 1C1D5802 FB88D507
What is the address of the instruction that WOULD HAVE BEEN EXECUTED NEXT had the program not ABENDed on the current Instruction?
What is the length (in bytes) of the instruction that caused the ABEND?
What is the condition code? (Answer with decimal number)
What is the address of the instruction that caused the ABEND?
Write the instruction that caused the ABEND as the programmer would have written it in EXPLICIT assembler language using decimal values.
What type of program interrupt occurred?
Number ____________ Name __________________________________
The ABENDing instruction may have as many as two address operands. Give the addresses (in hex) of those locations. Note: If that instruction refers to only 1 or to no memory locations, write "NONE" in the unused memory Location field(s).
Location 1 __________________ Location 2 ________________
Give the COMPLETE contents in hex, of the field at one or the other of the Locations that is responsible for the failure of the instruction.
Why did this cause the ABEND?
Write that NEXT instruction that would have been executed as the programmer would have written it in EXPLICIT assembler language using decimal values.
Part VI. Packed Decimal.
Given the following field definitions. Perform the indicated packed decimal operations. Give the COMPLETE contents of each BYTE of the receiving field (in hex) after the execution of the instruction. The instructions are not cumulative; Assume original contents of each field for each question.
NUM1 DC X'375C' NUM2 DC X'00050D' NUM3 DC X'00000004005C' NUM4 DC X'050F' NUM5 DC X'0000060C' ZNUM DC X'F1F25CF5' 1. UNPK ZNUM(4),NUM4(2) 2. ZAP NUM5(4),NUM2(3) 3. SP NUM1(2),NUM2(3) 4. MP NUM5(4),NUM4(2) 5. DP NUM3(6),NUM4(2) 6. PACK NUM3(6),ZNUM(4) 7. CP NUM5(4),NUM4(2) CONDITION CODE = ________
Part VII. Short Coding.
Write one instruction to clear (to zero) ONLY the high (left-most) byte of register 15.
Write a storage definition labeled PARM. The storage definition should create a standard parameter list that will provide the labeled locations X, Y, and Z as parameters for a subroutine.
Write one executable instruction that will set up the correct 'parameter' register with the same parameter information specified in the previous question without the need to write the storage definition 'PARM'.
Store registers 8 through 0 in REGSAVE (define REGSAVE to be the correct size).
Restore all the above registers except 8 and 0.
Write a sequence of two SRP instructions to change to zero the rightmost digit of the packed decimal number at DEC.
Show the EBCDIC result of the following MVC instruction (no partial credit).
MVC AREAX+4(12),AREAX AREAX DC CL16'VOIDSPACEISEMPTY' AREAX C'_______________________________________________'
Miscellaneous Questions
1. What information is kept in the rightmost 3 bytes of the PSW? a. The condition code. b. The address of the currently executing instruction. c. The address of the next instruction. d. The cube root of the address of the main save area. 2. The instruction MVC 4(4,R4) ,O(R6) will: a. Put the 4 bytes located at O(R6) into R4. b. Put the 4 bytes located at 4(R4) into R6. c. will copy 4 bytes from location O(R6) to 4(R4). d. Will copy 4 bytes from location 4(R4) to O(R6). 3. Which of the following is true about DSECTS? a. A DSECT is used to set aside an area in storage. b. A DSECT is used to describe an area in storage. c. If you code a DC statement as part of a DSECT, object code will be generated. d. A DSECT can contain executable statements. 4. The SLA instruction: a. Causes all bits of a specified register to shift left b. Can cause overflow. c. Is used for dividing a number by a power of 2. d. Is primarily used for rounding packed decimal numbers 5. Which of the following is true concerning the EX instruction? a. It can only be used with the instructions TRT, MVC, TM. b. It is used to clear an area of storage to binary Os. c. It is the only way to move asterisks. d. It is the easiest way to move a variable length field. 6. The TRT instruction: a. Is used to search for certain hexadecimal values in a storage area. b. Will alter the contents of RO and Rl when it executes. c. Will stop scanning when it finds a character whose entry in the scan table is X'QQ'. d. All of the above. 7. When invoking an external subroutine, you must get its address by using a V-Con because: a. It is possible that the subroutine was separately assembled; we don't know its address during assembly. b. Because the address is too large for an A-Con. c. That is the only way to put an address into R15. d. The displacement of the routine from our current base register might be more than 4095 bytes, prohibiting the use of the LA instruction. 8. The range of addressability for a base register is: a. 1000 bytes b. 5000 bytes c. 4095 bytes d. 4096 bytes e. There is no limit. 9. Which is the most efficient instruction to multiply the contents of R7 by 128. a. D R7,=F'128' b. SRA R7,128 c. SRA R7,7 d. SLA R7,7 e. SLA R7,128 10. Which of the following is true? a. ANDing a bit with a one turns the bit on. b. ORing a bit with a one turns the bit off. c. XORing a bit with a zero turns the bit off. d. ORing a bit with itself turns the bit on. e. XORing a bit with itself turns the bit off. 11. To turn off only selected bits in a 1 byte storage area, use: a. the XC instruction. b. the NR instruction. c. the OI instruction. d. the TM instruction. e. none of the above. 12. Which of the following macro instructions is used to take an unconditional branch during macro processing? a. B .FOUND b. BUNCOND &FOUND c. AGO .FOUND d. AGO &FOUND e. AIF .FOUND 13. If you try to add data to an uninitialized packed decimal number, what type of ABEND will occur? a. SOC 1 b. SOC 4 c. SOC 6 d. SOC 7 14. Under the standard linkage conventions, what can a called program always assume upon entry? a. R14 points to the entry point of the program. b. R1S contains the address to return to in the caller. c. R13 contains the address of the caller's save area. d. Rl contains the backward pointer. 15. The prototype statement of a macro: a. Is the second line of the macro definition. b. Detf: :mines the format you must use to invoke the macro c. Can contain positional and/or keyword parameters. d. All of the above. 16. When a number is read in from an input file in zoned decimal a. You must use a CVD on it before you can use it. b. It can be placed into a register by using UNPK and CVB. c. It can immediately be used as an operand in an AP. d. None of the above. 17. Before you can use the labels in a DSECT, a. You need to do an XREAD to fill it with data.. b. You must establish addressability to it with a USING c. There is nothing you have to do before accessing the labels in a DSECT. 18. Show the constants (/U>in hex) generated by each DC statement. ABC DC 5X'3B' DEF DC A(43) GHI DC PL5'l57' JKL DC 2CL4'DEFGH' MNO DC F'-1' 18. DSECTs. Assume that there is a table labeled DATABLE, which is composed of 10 entries. Each entry contains: a twenty byte player name, a two byte player number, a four byte packed decimal number containing a player's points per game. (a) Define a DSECT that could be used to assign a label to each of these fields. (b) Now give the assembler code that would be necessary to establish addressability to this DSECT1 so that it describes the first entry of DATABLE. 19. For each of these, give the necessary assembler instruction (or instructions) to accomplish each task. (a) Set bits 0, 1, 2, 3 and 7 of the byte BYTE to 1. (b) Change bits 3, 4, 5, and 6 of the byte BYTE to O. (c) There is a signed fullword stored at label BEAVIS. Switch the sign of this number. (e.g. if BEAVIS currently has 00000005, change it to FFFFFFFB) (d) Subtract 1 from R6. (e) Check to see if R15 is zero; if it is, branch to ZERO. (f) Move an unknown (but < 256) bytes from FLD to PLINE, where the number of bytes you must move is in R8. (g) Divide the number in R8 by 32. (h) Put the first three bytes found at the label THREE into the leftmost three bytes of R4. (i) Store the rightmost byte of R9 into the byte BYTEl (j) If the first and last bits of BYTE2 are 1, branch to ONES (k) Change the contents of THEFLD, which is a 10 byte field, to all hexadecimal Os. 20. Long coding. Give the assembler code to solve each. Be sure to include any storage areas you need. (a) Find the first occurrence of either a semicolon or a comma in the 100 byte string SEARCHME. Put the address of that character in register R1. (b) Assume a table defined as TABLE DS 100F has been built, and each entry that has been filled holds a fullword number. The logical end of table address is stored in a word called EOT. Write assembler code that will calculate the average of the numbers in the table, and store that average in a fullword AVERAGE. Remember that the table may not be completely full.(c) We have a 7-byte packed decimal variable LOOT representing an amount of money. We want to print it in a print line called LOOTLINE starting at the 11th byte. Write the code we need to print this amount of money neatly: suppress leading zeroes, use commas every 3 digits, insert a decimal point, and if the value is negative, print "CR" to the right of the value.