100% found this document useful (1 vote)
3K views15 pages

SIC/XE Assembly Programming Exercises

This document contains 17 solved programming exercises involving writing assembly code instructions for the SIC/XE computer architecture. The exercises cover tasks like setting variables to values, swapping variable values, clearing strings, setting array elements, finding maximum array values, and reading/writing records to devices. Sample assembly code solutions are provided for each exercise.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
3K views15 pages

SIC/XE Assembly Programming Exercises

This document contains 17 solved programming exercises involving writing assembly code instructions for the SIC/XE computer architecture. The exercises cover tasks like setting variables to values, swapping variable values, clearing strings, setting array elements, finding maximum array values, and reading/writing records to devices. Sample assembly code solutions are provided for each exercise.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
  • Exercise 1: ALPHA Sequence
  • Exercise 3: Swap Values
  • Exercise 4: ALPHA Integer Position
  • Exercise 6: Divide and Round
  • Exercise 7: String Clearing
  • Exercise 9: Zero Array Elements
  • Exercise 10: Array Manipulation
  • Exercise 11: Ascending Order
  • Exercise 13: Maximum Element
  • Exercise 14: Device I/O
  • Exercise 16: Record Reading
  • Exercise 15: Alternative I/O
  • Exercise 17: Efficient Reading

Solved Exercises

Chapter 1

1. Write a sequence of instructions for SIC to ALPHA equal to the product of BET
A and GAMMA.
Assume that ALPHA, BETA and GAMMA are defined as in Fig.1.3(a).

Assembly Code:

LDA BETA
MUL GAMMA
STA ALPHA
:
:
ALPHA RESW 1
BETA RESW 1
GAMMA RESW 1

2. Write a sequence of instructions for SIC/XE to set ALPHA equal to 4 * BETA


9.
Assume that
ALPHA and BETA are defined as in Fig. 1.3(b). Use immediate addressing for the c
onstants.

Assembly Code:

LDA BETA
LDS #4
MULR S,A
SUB #9
STA ALPHA
:
:

ALPHA RESW 1

3. Write SIC instructions to swap the values of ALPHA and BETA.

Assembly Code:

LDA ALPHA
STA GAMMA
LDA BETA
STA ALPHA
LDA GAMMA
STA BETA
:
:
ALPHA RESW 1
BETA RESW 1
GAMMA RESW 1

4. Write a sequence of instructions for SIC to set ALPHA equal to the integer po
rtion of
BETA GAMMA. Assume that ALPHA and BETA are defined as in Fig.1.3(a).

Assembly Code:

LDA BETA
DIV GAMMA
STA ALPHA
:
:
ALPHA RESW 1
BETA RESW 1
GAMMA RESW 1

5. Write a sequence of instructions for SIC/XE to divide BETA by GAMMA, setting


ALPHA to the
integer portion of the quotient and DELTA to the remainder. Use register-to-regi
ster instructions
to make the calculation as efficient as possible.

Assembly Code:

LDA BETA
LDS GAMMA
DIVR S, A
STA ALPHA
MULR S, A
LDS BETA
SUBR A, S
STS DELTA
:

:
ALPHA RESW 1
BETA RESW 1
GAMMA RESW 1
DELTA RESW 1

6. Write a sequence of instructions for SIC/XE to divide BETA by GAMMA, setting


ALPHA to the
value of the quotient, rounded to the nearest integer. Use register-to-register
instructions to
make the calculation as efficient as possible.

Assembly Code:

LDF BETA
DIVF GAMMA
FIX
STA ALPHA

:
:

ALPHA RESW 1
BETA RESW 1
GAMMA RESW 1

7. Write a sequence of instructions for SIC/XE to clear a 20-byte string to all


blanks.

Assembly Code:

LDX ZERO
LOOP LDCH BLANK
STCH STR1,X
TIX TWENTY
JLT LOOP
:
:
STR1 RESW 20
BLANK BYTE C
ZERO WORD 0
TWENTY WORD 20

8. Write a sequence of instructions for SIC/XE to clear a 20-byte string to all


blanks. Use immediate
addressing and register-to-register instructions to make the process as efficien
t as possible.

Assembly Code:

LDT #20
LDX #0
LOOP LDCH #0

STCH STR1,X
TIXR T
JLT LOOP
:
:
STR1 RESW 20

9. Suppose that ALPHA is an array of 100 words, as defined in Fig. 1.5(a). Write
a sequence of
instructions for SIC to set all 100 elements of the array to 0.

Assembly Code:

LDA ZERO
STA INDEX
LOOP LDX INDEX
LDA ZERO
STA ALPHA, X
LDA INDEX
ADD THREE
STA INDEX

COMP K300
TIX TWENTY
JLT LOOP
:
:
INDEX RESW 1
ALPHA RESW 100
:
ZERO WORD 0
K300 WORD 100
THREE WORD 3

10. Suppose that ALPHA is an array of 100 words, as defined in Fig. 1.5(a). Writ
e a sequence of
instructions for SIC/XE to set all 100 elements of the array to 0. Use immediate
addressing and
register-to-register instructions to make the process as efficient as possible.

Assembly Code:

LDS #3
LDT #300
LDX #0
LOOP LDA #0
STA ALPHA, X
ADDR S, X
COMPR X, T
JLT LOOP
:
:
ALPHA RESW 100

11. Suppose that ALPHA is an array of 100 words. Write a sequence of instruction
for SIC/XE to
arrange the 100 words in ascending order and store result in an array BETA of 10
0 elements.

Assembly Code:

NOT YET SOLVED

12. Suppose that ALPHA and BETA are the two arrays of 100 words. Another array o
f GAMMA
elements are obtained by multiplying the corresponding ALPHA element by 4 and ad
ding the
corresponding BETA elements.

Assembly Code:

LDS #3
LDT #300
LDX #0
ADDLOOP LDA ALPHA, X
MUL #4

ADD BETA, X
STA GAMMA, X
ADDR S, X
COMPR X, T
JLT ADDLOOP
:
:
ALPHA RESW 100
BETA RESW 100
GAMMA RESW 100

13. Suppose that ALPHA is an array of 100 words. Write a sequence of instruction
s for SIC/XE to find
the maximum element in the array and store results in MAX.

Assembly Code:

LDS #3
LDT #300
LDX #0
CLOOP LDA ALPHA, X
COMP MAX
JLT NOCH
STA MAX
NOCH ADDR S, X
COMPR X, T
JLT CLOOP
:
:
ALPHA RESW 100

MAX WORD -32768

14. Suppose that RECORD contains a 100-byte record, as in Fig. 1.7(a). Write a s
ubroutine for SIC
that will write this record on to device 05.

Assembly Code:

JSUB WRREC
:
:
WRREC LDX ZERO
WLOOP TD OUTPUT
JEQ WLOOP
LDCH RECORD, X
WD OUTPUT
TIX LENGTH
JLT WLOOP
RSUB
:

:
ZERO WORD 0
LENGTH WORD 1
OUTPUT BYTE X

05

RECORD RESB 100

15. Suppose that RECORD contains a 100-byte record, as in Fig. 1.7(a). Write a s
ubroutine for SIC
that will write this record on to device 05.

Assembly Code:

JSUB WRREC
:
:
WRREC LDX #0
LDT #100
WLOOP TD OUTPUT
JEQ WLOOP
LDCH RECORD, X
WD OUTPUT
TIXR T
JLT WLOOP
RSUB
:
:
OUTPUT BYTE X 05
RECORD RESB 100

16. Write a subroutine for SIC that will read a record into a buffer, as in Fig.
1.7(a). The record may

be any length from 1 to 100 bytes. The end of record is marked with a null charact
er (ASCII
code 00). The subroutine should place the length of the record read into a varia
ble named
LENGTH.

Assembly Code:

JSUB RDREC
:
:
RDREC LDX ZERO
RLOOP TD INDEV
JEQ RLOOP
RD INDEV
COMP NULL
JEQ EXIT
STCH BUFFER, X
TIX K100
JLT RLOOP
EXIT STX LENGTH

RSUB
:
:
ZERO WORD 0
NULL WORD 0
K100 WORD 1
INDEV BYTE X

F1

LENGTH RESW 1
BUFFER RESB 100

17. Write a subroutine for SIC/XE that will read a record into a buffer, as in F
ig.1.7(a). The record
may be any length from 1 to 100 bytes. The end of record is marked with a null cha
racter
(ASCII code 00). The subroutine should place the length of the record read into
a variable named
LENGTH. Use immediate addressing and register-to-register instructions to make t
he process as
efficient as possible.

Assembly Code:

JSUB RDREC
:
:
RDREC LDX #0
LDT #100
LDS #0
RLOOP TD INDEV
JEQ RLOOP
RD INDEV
COMPR A, S
JEQ EXIT

STCH BUFFER, X
TIXR T
JLT RLOOP
EXIR STX LENGTH
RSUB
:
:
INDEV BYTE X

F1

LENGTH RESW 1
BUFFER RESB 100

Solved Exercises  Chapter 1 
 
 
1. Write a sequence of instructions for SIC to ALPHA equal to the product of BET
A and GAMMA
ALPHA RESW 1 
 
3. Write SIC instructions to swap the values of ALPHA and BETA. 
 
Assembly Code: 
 
 LDA ALPHA 
 STA GAMMA
4. Write a sequence of instructions for SIC to set ALPHA equal to the integer po
rtion of 
BETA ÷ GAMMA. Assume that ALPHA an
: 
 ALPHA RESW 1 
 BETA RESW 1 
 GAMMA RESW 1 
 DELTA RESW 1 
 
6. Write a sequence of instructions for SIC/XE to divide BET
ALPHA RESW 1 
 BETA RESW 1 
 GAMMA RESW 1 
 
7. Write a sequence of instructions for SIC/XE to clear a 20-byte string to all
STCH STR1,X 
 TIXR T 
 JLT LOOP 
 : 
 : 
 STR1 RESW 20 
 
9. Suppose that ALPHA is an array of 100 words, as defined in Fig.
COMP K300 
 TIX TWENTY 
 JLT LOOP 
 : 
 : 
 INDEX RESW 1 
 ALPHA RESW 100 
 : 
 ZERO WORD 0 
 K300 WORD 100 
 THREE WORD 3
11. Suppose that ALPHA is an array of 100 words. Write a sequence of instruction
 for SIC/XE to 
arrange the 100 words in a
ADD BETA, X 
 STA GAMMA, X 
 ADDR S, X 
 COMPR X, T 
 JLT ADDLOOP 
 : 
 : 
 ALPHA RESW 100 
 BETA RESW 100 
 GAMMA RESW 100
MAX WORD -32768 
 
14. Suppose that RECORD contains a 100-byte record, as in Fig. 1.7(a). Write a s
ubroutine for SIC 
that

You might also like