Computer Organization and Assembly Language Programming Lab# 1. Write a program
ID: 3878069 • Letter: C
Question
Computer Organization and Assembly Language Programming Lab# 1. Write a program that reads an array of 20 integers with an appropriate prompt, stores it. and then prints in three formats: One integer per line; -All integers in a single line separated by spaces, -All in integers in a single line in the reverse order separated by spaces, You program requests entering a positive integer n20 and then prints the 20 integers, n integers (separated by space) per line.. Test your program for one set of 20 integers and for n= 5 and n=6 Submit a hardcopy of your programs and their outputs.Explanation / Answer
.data:
array: .space 80 # allocating space for maximum 20 integers
n: .space 4
prompt1: .asciiz "Enter 20 integers: "
prompt2: .asciiz "One value per line "
prompt3: .asciiz "Here are the values in single line: "
prompt4: .asciiz "Here are the values in reverse: "
prompt5: .asciiz "Enter a value n <=20: "
prompt6: .asciiz "Here are the n values in single line: "
newline: .asciiz " "
space: .asciiz " "
.globl main
.text
main:
#prompt and read elements
li $t0, 0
li $v0, 4
la $a0, prompt1
syscall
jal readElements
#print one element in one line
li $t2, 0
li $v0, 4
la $a0, prompt2
syscall
jal printElements
#print all elements in one line
li $t2, 0
li $t3, 80
li $v0, 4
la $a0, prompt3
syscall
jal printElementsSingle
#print elements in reverse
li $t2, 80
li $v0, 4
la $a0, prompt4
syscall
jal printElementsReverse
#pprompt user and read n
li $v0, 4
la $a0, prompt5
syscall
li $v0, 5 #read int
syscall
sw $v0, n
#print all elements in one line
li $t2, 0
li $t3, 80
li $v0, 4
la $a0, prompt3
syscall
jal printElementsSingle
#print one element in one line
li $t2, 0
lw $t3,n
mul $t3,$t3, 4
li $v0, 4
la $a0, prompt6
syscall
jal printElementsSingle
li $v0, 10
syscall
readElements:
li $v0, 5 #read int
syscall
sw $v0, array($t0)
addi $t0, $t0, 4
bne $t0, 80 readElements
jr $ra
print:
printElements:
lw $a0, array($t2)
li $v0, 1
syscall
addi $t2, $t2, 4
li $v0, 4
la $a0, newline
syscall
bne $t2, 80, printElements
jr $ra
printElementsSingle:
lw $a0, array($t2)
li $v0, 1
syscall
addi $t2, $t2, 4
li $v0, 4
la $a0, space
syscall
bne $t2, $t3, printElementsSingle
li $v0, 4
la $a0, newline
syscall
jr $ra
printElementsReverse:
subi $t2, $t2, 4
lw $a0, array($t2)
li $v0, 1
syscall
li $v0, 4
la $a0, space
syscall
bne $t2, 0, printElementsReverse
li $v0, 4
la $a0, newline
syscall
jr $ra
Hope this helps. DOo Upvote! :)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.