Question: I need help fixing my MIPS code based on the requirements of my assingmment, you shold only need to change the code that has been

I need help fixing my MIPS code

based on the requirements of my assingmment, you shold only need to change the code that has been highlighted in bold

its a program which implements a function that searches an array for a data value based on a user's input

.

.

the output of my code looks like this:

my Output:

Array Search Program Enter search value: 19 Search returns 7

-- program is finished running --

Reset: reset completed.

Array Search Program Enter search value: 16 The value was not found

^program dose not finish for some reason in this case^

.

.

but I need my output to look like this:

Desired Output:

Array Search Program Enter search value: 19 x[7]=19 -- program is finished running --

Reset: reset completed.
Array Search Program Enter search value: 16 The value 16 was not found -- program is finished running --

.

.

,

as you can see the output is based on a if-then-else statement that prints messages for the cases where the data is in the array and the data is not in the array. (if-then-else statement code has been highlighted in bold)

.

there is an I/o library in the lower half of the code which can help you understand the included functions

I know the answer shoud be simple but I cant figure it out

.

.

anyways here is my code for the program again, please just change the code that has been highlighted in bold:

.

my program:

# array search Program #

.data

program: .asciiz "Array Search Program" prompt: .asciiz "Enter search value: " txt1: .asciiz "x[" txt2: .asciiz "]=" txt3: .asciiz "The value " txt4: .asciiz " was not found" txt5: .ascii "Search returns " .align 2 x: .word 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 .global main

.text

main: # register map # # $s0 search value # Print program header la $a0, program jal printlnString # Input and save search key la $a0, prompt jal getIntPrompt move $s0, $v0 # Search for key in array x move $a0, $s0 la $a1, x li $a2, 11 jal search

# * I need help with code here *

# # Check if search function returned -1 beq $v0, -1, notFound

# Print index of key la $a0, txt5 move $a1, $v0 jal printlnStringInt j end

notFound: # Print "The value was not found" message la $a0, txt3 la $a1, txt4 jal printString

end:

# * the code I need help with ends here * # Exit li $v0, 10 syscall search: # register map # $a0 search value # $a1 array address # $a2 array size # # $t0 loop counter # $t1 address of i'th array element # value of i'th array element li $v0, -1 # for $t0=0, $t0 < $a3, $t0++ li $t0, 0 loop: bge $t0, $a2, return sll $t1, $t0, 2 addu $t1, $t1, $a1 lw $t1, ($t1) # if x[i] > $a0 bne $t1, $a0, endif2 move $v0, $t0 j return endif2: addi $t0, $t0, 1 j loop return: jr $ra # CSCI 313 -- Fall 2022 # I/O Library # includes input functions # place this code at the end of your assembly file .data newLine: .asciiz " " space: .asciiz " " .align 2

.text

printSpace: # prints a space # arguments # none # returns # none la $a0, space li $v0, 4 syscall jr $ra println: # prints a new line # arguments # none # returns # none la $a0, newLine li $v0, 4 syscall jr $ra printInt: # prints an integer # arguments # $a0 integer to print # returns # none li $v0, 1 syscall jr $ra

printlnInt: # prints an integer with a new line # arguments # $a0 integer to print # returns # none li $v0, 1 syscall la $a0, newLine li $v0, 4 syscall jr $ra

printString: # prints a string # arguments # $a0 address of string to print # returns # none li $v0, 4 syscall jr $ra printlnString: # prints a string with a new line # arguments # $a0 address of string to print # returns # none li $v0, 4 syscall la $a0, newLine li $v0, 4 syscall

jr $ra printStringInt: # prints a string and an integer # arguments # $a0 address of string to print # $a1 integer to print # returns # none # save return address so not overwritten # save $a1 so not overwritten addiu $sp, $sp, -8 sw $a1, 4($sp) sw $ra, 0($sp) # print string jal printString # print int # get argument from stack lw $a0, 4($sp) jal printInt lw $ra, 0($sp) addiu $sp, $sp, 8 jr $ra

printlnStringInt: # prints a string and an integer with new line # arguments # $a0 address of string to print # $a1 integer to print # returns # none # save return address so not overwritten # save $a1 so not overwritten addiu $sp, $sp, -8 sw $a1, 4($sp) sw $ra, 0($sp) # print string jal printString # print int # get argument from stack lw $a0, 4($sp) jal printlnInt lw $ra, 0($sp) addiu $sp, $sp, 8 jr $ra

getInt: # inputs an integer # arguments # none # returns # $v0 integer that was input li $v0, 5 syscall jr $ra getIntPrompt: # inputs an integer using a text prompt # arguments # $a0 address of string to print # returns # $v0 integer that was input # save return address so not overwritten addiu $sp, $sp, -4 sw $ra, 0($sp) jal printString jal getInt lw $ra, 0($sp) addiu $sp, $sp, 4 jr $ra

.

thank you for your help

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!