The following questions are taken from the first examination of previous semesters. They will not appear on this semester's first exam, but they are similar to questions which likely will. Be sure to not limit your review to just these questions.
Arithmetic
Convert the following UNSIGNED numbers:
DECIMAL BINARY HEXADECIMAL
1045 ___________________________ _______________
______________ 110010011110 _______________
______________ ___________________________ 105B
Do the following integer arithmetic (not 32-bit)
BINARY 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 0 1 1 0
+ 1 0 1 1 1 0 1 1 1 1 - 1 0 0 0 0 1 1 1 1
--------------------- ---------------------
HEXADECIMAL 8 6 7 B 3 F 0 A
+ E 8 F 9 - 1 0 C F
--------- ---------
Do the following fullword (32 bit, two's complement)
arithmetic and determine if any overflow occurred and
explain why or why not:
5 8 9 A B 8 7 E C 8 5 2 9 A C D
+ 4 7 B F 8 7 5 2 - C 4 8 8 6 B A 6
----------------- -----------------
Fill in the Blank
Write the correct number in each blank:
A fullword contains_____bytes. A fullword contains_____bits.
RR instruction size =_____bytes. RX instruction size =_____bytes.
A PSW contains ____ bits or ____ bytes or _____ fullwords.
What is the carriage control character foreach fo these?
Note: A blank with nothing written in it is not an answer!
a. Top of Page______ b. Single Space______
c. Double Space______ d. Triple Space______
Given the following register contents, calculate
absolute addresses (in Hexadecimal) for the D(B) or
D(X,B) addresses given below (6 points)
R0 = 00000062 R1 = F4F4F4F4 R2 = 00000359 R3 = 80012345
37(0,3) ____________ 16(1) ____________ 29(2,3) ____________
Debugging
Answer the following questions using the PSW AT ABEND
given below. Give 'address' answers in hexadecimal.
PSW AT ABEND FFC50001 5F000E34
Contents of memory starting at address (hex) 000E20
Address Contents
000E20 40125802 5012D503 50301231 5872F01C 1A5500CC 47B0F010
1. What is the address of the instruction that would have been
executed next had the program not ABENDed on the current
instruction?
___________________________
2. What is the length (in bytes) of the
instruction that caused the ABEND? ___________________________
3. What is the condition code? (Answer with decimal number) ____
4. What is the address of the
instruction that caused the ABEND? __________________________
5. What type of program interrupt occurred?
Number ____________ Name __________________________________
6. Write the next instruction that would have been
executed as the programmer would have written it
in explicit assembler language using decimal values.
_________________________________________________________
Encoding/Decoding
Fill in the blanks on the assembly listing below, using implicit addresses where possible:
LOCATION COUNTER MACHINE SOURCE
VALUE (HEX) LANGUAGE (HEX) LANGUAGE
000000 EXAM1 CSECT
000000 USING EXAM1,15
000000 _______________ L 2,F33
________ _______________ LA 3,3
________ _______________ MR 2,2
________ 5020 F034 _______________
________ _______________ AR 3,3
________ 5D20 F02C _______________
________ 47A0 E000 _______________
________ _______________ BR 14
________ _______________ F129 DC F'129'
000020 _______________ F33 DC F'33'
________ _______________ AB DC 2CL3'AB'
________ _______________ BC DC F'-15'
________ _______________ CD DC 3C'?'
________ _______________ EF DC CL2'45'
________ _______________ TOTAL DS F
END EXAM1
Short Coding
Write assembly instructions to perform the following tasks. (Define any extra storage you reference.) Inefficient code will not receive full credit. Use literals where possible.
1. Quadruple the value in register 2.
2. Increment the value in register 7 by 5182.
3. Initialize register 0 to zero.
4. Multiply the contents of register 11 by -99.
5. Divide the contents of register 8 (which contains
32) by the contents of register 6.
6. Compare the contents of registers 2 and 3. Branch
to the label FOUND if the contents of register 2 are
not equal to the contents of register 3.
7. Write the equate statement necessary to equate the
value 3 with the symbol SAVE.
8. Save the contents of register 10 into a fullword labelled JAR.
Results of Operations
Given the starting values listed for registers and a portion of storage, show the complete contents (in hex) after execution of the instruction. Starting values apply to each instruction. Results are NOT cumulative.
Starting values for each instruction:
R0 = 00000200 R1 = FF000204 R3 = 0000036C R4 = FFFFFFFF
R5 = FFFFFFFF R6 = 00000004 R7 = 00000064 R8 = 00000004
ADDRESS CONTENTS
000200 F5F5F5F5 0000003C 00000123 00000008
LR 5,6 R5 = _____________
LA 1,2(0,3) R1 = _____________
L 6,4(6,1) R6 = _____________
DR 4,8 R4 = _____________ R5 = _____________
AR 0,6 R0 = _____________
MR 4,4 R4 = _____________ R5 = _____________
LTR 3,4 R3 = _____________
Longer Coding
1. Write the assembler source code to implement the expression below. Assume that all fields have already been correctly defined as fullwords in your storage area. Provide all necessary labels. Use literals if appropriate. Rounding is not necessary.
VALUE = ((NUM4 - NUM3)/2) * NUM2) + NUM4
2. The following complete assembly language program reads an unknown number of 80 byte records and calculates the average of the first number found on all records. Some parts of the program have been left out, and you are to fill in each blank with the appropriate value. What follows is the complete program: no additional fields are available, nor may they be written in.
CALCUL8 CSECT , Begin program
USING ________________ Define base register
SR 3,3 Initialize sum of card values
SR 4,4 Initialize count of valid values
XREAD CARD,80 Read first record
*
LOOP BC ____________,EOF Finished if no more records
XDECI ________________ Get first number from record
BC ________________ B if none found
AR 3,0 Else add to total
A 4,______________ And increment count of numbers
NEXTCARD XREAD CARD,80 Get next input record
______________________ Continue
*
EOF LTR 4,______________ Any numbers found?
BC B'1000',SAVE No, save zero
M 2,______________ Prepare to divide
DR 2,______________ Get average in R3
AR 2,2 Double the remainder
CR 2,______________ Compare with divisor
BC ___________,SAVE Branch if no rounding needed
A 3,______________ Else round up
*
SAVE ST 3,AVG Save for XDUMP
XDUMP ________________ Display value saved above
BCR ________________ Return to caller
*
______________________ (This belongs in every program!)
CARD DS ________________
DC ________________
AVG DS ________________
END CALCUL8
3. Suppose we have a file containing 80-byte records. Each record contains one integer. Write the code needed to do the following: Read all the lines in the file and find the largest number present. Print one line of output which says: "LARGEST NUMBER = " followed by the value. This does not have to be a complete program. If you need variables, define them. Do nothing extra.