Help please there is a bug which is causing my code to output -1 even when it shoud not. It is supposed to be a    MIPS assembly language program that asks the user to input 2 strings (each should be no longer than 50 characters including the null terminator). The program should determine whether the second string is a substring of the first. If it is, then the program should print out the first index in which the second string appears in the first. As an example, if the first string is “Hello World” and the second string is “lo”, then the program should print out 3, i.e. the starting index of “lo” in “Hello World.” If the second string is not contained in the first string, then the program should print out -1. .datastr1: .space 51str2: .space 51msg1: .asciiz " Please enter a string: "msg2: .asciiz " Please enter a 2nd string: ".text.globl mainmain:# print message 1li $v0, 4la $a0, msg1syscall# read string 1li $v0, 8la $a0, str1li $a1, 51syscall# print message 2li $v0, 4la $a0, msg2syscall# read string 2li $v0, 8la $a0, str2li $a1, 51syscall# find substringla $t0, str1la $t1, str2find_substring:lb $t2, 0($t0)beqz $t2, not_foundlb $t3, 0($t1)beq $t2, $t3, check_substringaddiu $t0, $t0, 1j find_substringcheck_substring:addiu $t1, $t1, 1lb $t3, 0($t1)beqz $t3, foundlb $t2, 1($t0)beq $t2, $t3, check_substringla $t1, str2addiu $t0, $t0, 1j find_substringfound:la $a0, str1sub $a0, $t0, $a0li $v0, 1syscallj exitnot_found:li $v0, 1li $a0, -1syscallexit:li $v0, 10syscall

C++ for Engineers and Scientists
4th Edition
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Bronson, Gary J.
Chapter9: Completing The Basics
Section9.3: The String Class
Problem 7E
icon
Related questions
Question
100%

Help please there is a bug which is causing my code to output -1 even when it shoud not.

It is supposed to be a 

  MIPS assembly language program that asks the user to input 2 strings (each should be no longer than 50 characters including the null terminator).

The program should determine whether the second string is a substring of the first.

If it is, then the program should print out the first index in which the second string appears in the first.

As an example, if the first string is “Hello World” and the second string is “lo”, then the program should print out 3, i.e. the starting index of “lo” in “Hello World.”

If the second string is not contained in the first string, then the program should print out -1.

.data
str1: .space 51
str2: .space 51
msg1: .asciiz " Please enter a string: "
msg2: .asciiz " Please enter a 2nd string: "
.text
.globl main
main:
# print message 1
li $v0, 4
la $a0, msg1
syscall
# read string 1
li $v0, 8
la $a0, str1
li $a1, 51
syscall
# print message 2
li $v0, 4
la $a0, msg2
syscall
# read string 2
li $v0, 8
la $a0, str2
li $a1, 51
syscall
# find substring
la $t0, str1
la $t1, str2
find_substring:
lb $t2, 0($t0)
beqz $t2, not_found
lb $t3, 0($t1)
beq $t2, $t3, check_substring
addiu $t0, $t0, 1
j find_substring
check_substring:
addiu $t1, $t1, 1
lb $t3, 0($t1)
beqz $t3, found
lb $t2, 1($t0)
beq $t2, $t3, check_substring
la $t1, str2
addiu $t0, $t0, 1
j find_substring
found:
la $a0, str1
sub $a0, $t0, $a0
li $v0, 1
syscall
j exit
not_found:
li $v0, 1
li $a0, -1
syscall
exit:
li $v0, 10
syscall

Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
File Input and Output Operations
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ for Engineers and Scientists
C++ for Engineers and Scientists
Computer Science
ISBN:
9781133187844
Author:
Bronson, Gary J.
Publisher:
Course Technology Ptr