- #1
sweetvirgogirl
- 116
- 0
--------------------------------------------------------------------------------
Write a SIC program whose inputs are
two blocks of integers, BLK1 and BLK2 and whose output is a third
block of integer, BLK3. Each of these blocks contains 50
integers. Your program will take the integers in BLK1 in reverse
order and add them to the integers in BLK2 and store the
resulting integers in BLK3. A simple way to do this is to add the
last integer in BLK1 to the first integer in BLK2 and store the
result in the first position in BLK3. Then add the second last
integer in BLK1 to the second integer in BLK2 and store the
result in BLK3; etc. Don't forget that 50 integers = 50 words =
150 bytes. Your program should assume that the blocks have been
declared and initialized elsewhere. Also assume that BLK1, BLK2
and BLK3 are labels of the base addresses of the 3 blocks.
This is what I wrote:
LDA One Hundred Fifty
STA INDEX1
LDL ZERO
STL INDEX2
ADDLP LDX INDEX2
LDL INDEX2
LDA BLK1, X
ADD BLK2, L
STA BLK3, X
LDA INDEX1
SUB THREE
STA INDEX1
LDA INDEX2
ADD THREE
STA INDEX2
COMP K150
JLT ADDLP
I think I'm really confused about using 150 as the starting point for BLK1, coz maybe I should use 147 .. but then it messes up everything? Am I missing something? Does my code look right?
Write a SIC program whose inputs are
two blocks of integers, BLK1 and BLK2 and whose output is a third
block of integer, BLK3. Each of these blocks contains 50
integers. Your program will take the integers in BLK1 in reverse
order and add them to the integers in BLK2 and store the
resulting integers in BLK3. A simple way to do this is to add the
last integer in BLK1 to the first integer in BLK2 and store the
result in the first position in BLK3. Then add the second last
integer in BLK1 to the second integer in BLK2 and store the
result in BLK3; etc. Don't forget that 50 integers = 50 words =
150 bytes. Your program should assume that the blocks have been
declared and initialized elsewhere. Also assume that BLK1, BLK2
and BLK3 are labels of the base addresses of the 3 blocks.
This is what I wrote:
LDA One Hundred Fifty
STA INDEX1
LDL ZERO
STL INDEX2
ADDLP LDX INDEX2
LDL INDEX2
LDA BLK1, X
ADD BLK2, L
STA BLK3, X
LDA INDEX1
SUB THREE
STA INDEX1
LDA INDEX2
ADD THREE
STA INDEX2
COMP K150
JLT ADDLP
I think I'm really confused about using 150 as the starting point for BLK1, coz maybe I should use 147 .. but then it messes up everything? Am I missing something? Does my code look right?
Last edited: