Answer:
See explaination
Explanation:
.data
arraysize: .word 10
counter: .word 1
alreadystored: .word 0
num: .space 40 # reserve 40 bytes from the starting address of array
inputmsg: .asciiz "Enter a floating point number:\n"
outputmsg: .asciiz "The array contains the following numbers: \n"
.text
.globl main
main:
lw $t1, counter #counter
lw $t2, arraysize #max length of array
la $t0, num # base address of the array
#set initial flag for duplicate array element 0=entered value not present in array,1= entered value exists in array
li $t3,0 #reset the flag for alreadystored to 0
Loop 1:
# print input message prompt
la $a0, inputmsg
li $v0, 4
syscall
# get user entered keyboard input
li $v0, 6
syscall
# move user entered value from $f0 to array base address
s.s $f0, 0($t0)
#load the value at address pointed by $t0 to register $f1
l.s $f1,0($t0)
#compare the entered value in register $f0 to the value stored in $f1
c.eq.s $f1,$f0
#jump to loop2 if the values are not equal ie if the entered value is not duplicate then increment the array index and compare with next array element
bc1f loop2
#else make the value of flag alreadystored =1
li $t3,1
# if no duplicate then move to the next position in the array, increment loop counter
loop2:
addi $t0, $t0, 4
addi $t1, $t1, 1
ble $t1, $t2, Loop1
# reset loop counter, and array address for printing out the array elements
lw $t1,counter
la $t0, num
# print output message prompt
la $a0, outputmsg
li $v0, 4
syscall
print_array:
# print array elements
l.s $f12, 0($t0)
li $v0, 2
syscall
# print space
la $a0, 32
li $v0, 11
syscall
# increment loop counter and move to next array element
addi $t1, $t1, 1
addi $t0, $t0, 4
ble $t1, $t2, print_array
#Exit
li $v0,10
syscall