Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Consider this MIPS program which implements a function that searches an array for a data value. The search function returns the index of the data

Consider this MIPS program which implements a function that searches an array for a data value. The search function returns the index of the data in the array, or -1 if the data is not in the array. The highlighted code does the output. It prints the result returned by the search function.

 # .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 # Print index of key la $a0, txt5 move $a1, $v0 jal printlnStringInt # 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 

Program Output

Array Search Program Enter search value: 0 Search returns -1 -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 2 Search returns 0 -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 15 Search returns -1 -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 17 Search returns 6 -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 31 Search returns 10 -- program is finished running -- Reset: reset completed. Array Search Program Enter search value: 33 Search returns -1 -- program is finished running -- 

The Assignment

The program searches an array using a linear search to find the index (position) of the search key in the array. It returns -1 if the data is not in the array and the index of the data value if it is in the array.

Notice that the output is not the most informative. You will replace the output code with a decision statement that prints more informative messages for the cases where the data is in the array and the data is not in the array.

Here is some Java-style code 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. Test your solution. Use the given text strings in the program data section. Only change the output code. Leave all of the other code unchanged. Here is how the output should appear.

Desired Output Style

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

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Samsung Galaxy S23 Ultra Comprehensive User Manual

Authors: Leo Scott

1st Edition

B0BVPBJK5Q, 979-8377286455

More Books

Students also viewed these Databases questions

Question

=+7. What impediments originate in society at large?

Answered: 1 week ago