Write the program in MIPS that declares an array of positive

Write the program in MIPS that declares an array of positive integers. The size of the array is not fixed. The final element of the array should have the value of 0xF, which is not used in calculations, and should be used to calculate the size of the array. The program can prompt the user for an integer input. Compare the input with the array. Display the index of the input in the array if found. If the number does not match any element in the array, insert the number in the array in sorted order. The program is terminated when input a negative integer. Print the new array with appropriate message on the screen. For example assume an array as follows:

(array: .word 4, 5, 23, 5, 8, 3, 15, 67, 8, 9, 0xF)

Sorted array: 3, 4, 5, 5, 8, 8, 9, 15, 23, 67

Enter a number to search: 20

Number not found. Added to array.

Sorted array: 3, 4, 5, 5, 8, 8, 9, 15, 20, 23, 67

Enter a number to search: 5

Number at index 2

Enter a number to search: -1 Program terminated.

Solution

.data
array: .space 100
input: .asciiz \"Enter at least 4 integers: Enter the number oxF to exit \ \"
output: .asciiz \"The array in ascending order: \ \"
commas: .asciiz \",\"
newline .asciiz\"\ \"

.text
.globl main
main:

la $s1, array #loads a pointer to array into $s1
li $s2,9 #loads 9 into $s2
li $t0,0
li $t1,oXF   

loops:

la $s0, input #loads input text into $a
li $v0, 4 #loads 4 into $v0 (prints string)
syscall   
li $v0, 5 #loads 5 into $v0 (read interger)
syscall   
beq $v0,$t1,swap
addi $t0,$t0,4 #add 4 to $t0, save to $t0
sw $v0, ($s1) #stores input into array
addi $s1, $s1,4 #add 4 to $s1, save to $s1
j loops

swap:

la $t4, array #loads array to $t4
la $t1, array #loads array to $t1
addi $t1,$t1,4 #add 4 to $t1, save to $t1
la $t8,array #loads array to $t8
add $t8,$t0,$t8 #add $t8 to $t0, save to $t8
la $t9,array
add $t9,$t0,$t9 #add $t9 to $t0, save to $t9
addi $t9,$t9,-4 #subtracts 4 from $t9, save to $t9

loop:

lw $t2,($t4) #load input into $t2
lw $t3,($t1) #load input into $t3
blt $t2,$t3,loop1 #if $t2 < $t3, go to loops
sw $t3,($t4) #store $t3 in $t4
sw $t2,($t1) #store $t2 in $t1

loop1:

addi $t1,$t1,4 #add 4 to $t1, save to $t1
blt $t1,$t8,loop #if $t1<$t8, go to loop
addi $t4,$t4,4 #add 4 to $t4, save to $t4
move $t1,$t4
addi $t1,$t1,4 #add 4 to $t1, save to $t1
blt $t4,$t9,loop #if $t4<$t9, to go loop

print:

la $s1,array #loads array to $s1
la $s0, output #loads output to $s0
li $v0, 4 #loads 4 into #v0
syscall

loop2:

blez $t0, done #if $t0<=0, go to done
li $v0, 1 #loads 1 into $v0
add $t1, $s1, $t0
addi $t1, $t1, -4
lw $s0, 0($t1) #load an inout into $s0
syscall
la $s0, commas #loads commas into $s0
li $v0, 4 #loads 4 into $v0
syscall
addi $s1, $s1, 4 #add 4 to $s1, save to $s1
addi $t0, $t0, -4 #subtracts 4 from #t0, save to $t0
j loop2

done:
j done

Write the program in MIPS that declares an array of positive integers. The size of the array is not fixed. The final element of the array should have the value
Write the program in MIPS that declares an array of positive integers. The size of the array is not fixed. The final element of the array should have the value

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site