Question
# array search Program # .data program: .asciiz Array Search Program prompt: .asciiz Enter search value: txt1: .asciiz x[ txt2: .asciiz ]= txt3: .asciiz
# 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 # *** your code starts here *** # #use an if-then-else decision statement that prints messages for the cases where the data is in the array and the data is not in the array. # # Check if search function returned -1 # # if the search function found the value then Print index of key in the array. # # Print index of key: la $a0, txt5 move $a1, $v0 jal printlnStringInt # # if the search function did not fid the value and returns-1, then Print "The value was not found" message # # *** your code 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 # I/O Library # includes input functions # ensure this code is 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
.
.
.
the MIPS code program above requires that you insert an if-then-else statement where the **code has been highlighted in bold**
the decision statement shoud print messages for the cases where the data is in the array and the data is not in the array.
.
there is an I/o library in the lower half of the code which can help you understand the included functions
you Only need to change the code that is highlighted in bold within the array search Program
if you could also show what you recived for your output, then I would be very thankful
more information can be found below
.
.
.
Program Information:
The MIPS program is a function that searches an array for a data value and returns the index of the data in the array, or -1 if the data is not found. It begins by printing a program header and then prompts the user to input a search value. The search value is saved in the $s0 register. The search function is then called, passing the search value in $a0, the address of the array in $a1, and the size of the array in $a2.
.
The search function sets the initial return value to -1 and then enters a loop that iterates through each element in the array. For each element, it compares the value of the element to the search value. If the element is equal to the search value, the return value is set to the current index and the loop is exited. If the loop completes, the return value remains -1, indicating that the search value was not found in the array.
.
After the search function is called, the result is printed using the printlnStringInt function, which prints a string followed by an integer. The program then exits. The I/O library at the end of the program includes functions for printing strings, integers, and new lines, as well as a function for prompting the user for an integer input.
.
The program then exits. The I/O library at the end of the program includes functions for printing strings, integers, and new lines, as well as a function for prompting the user for an integer input.
.
.
You will replace the code in the array searcch program above that is highlighted in bold with a > if-then-else < decision statement that prints messages for the cases where the data is in the array and the data is not in the array.
.
Here is an Java-style if-then-else code statement that captures this logic.
if (index != -1) print "x[", index, "]=", key else print "The value", key, " was not found"
^ **** Code this if-then-else in MIPS. **** ^
Here is how the output should appear:
'
Desired Output:
Array Search Program Enter search value: 0 The value 0 was not found -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 2 x[0]=2 -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 16 The value 16 was not found -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 19 x[7]=19 -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 31 x[10]=31 -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 16 The value 16 was not found -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 32 The value 32 was not found -- program is finished running --
.
.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started