Question: Can someone help me complete this code. So the stuff I need help on are in the comments. So everywhere there is a comment, i
Can someone help me complete this code. So the stuff I need help on are in the comments. So everywhere there is a comment, i need to do what it says. I have the first half of the MIPS code already and need help with the remaining. Please read carefully to understand what it expected. For example, if the comment says # ending s7 'end_text' address, then that is what needs to be done for that line. Please use the code that is given. HELP PLEASE!!!!!
The Output must look like this:
# INPUT: "Two bee ore knot too Bea that"
# PATTERN:00011000100011000010001100010000
# ROTATE: 00110001000110000100011000100000
# AND: 00010000000010000000001000000000
# RESULT:"Two bee ore knot too Bea that "
###################CODE STARTS HERE ################
#write a MIPS assembler program to remove the extra blanks from
# a string:
# INPUT: "Two bee ore knot too Bea that"
# PATTERN:00011000100011000010001100010000
# ROTATE: 00110001000110000100011000100000
# AND: 00010000000010000000001000000000
# RESULT:"Two bee ore knot too Bea that "
.data
.eqv SYS_PRINT_WORD 1 #word, byte, character
.eqv SYS_PRINT_FLOAT 2 #float
.eqv SYS_PRINT_DOUBLE 3 #double
.eqv SYS_PRINT_TEXT 4 #text (zero terminated)
.eqv SYS_INPUT_WORD 5 #input word
.eqv SYS_INPUT_FLOAT 6 #input float
.eqv SYS_PRINT_BIN 35 #print binary
.eqv SYS_EXIT 10 #terminate
# declare variables
.eqv BLANK 32
#12345678901234567890123456789012
text: .ascii "Two bee ore knot too Bea that"
end_text: .asciiz " "
result: .ascii " "
end_result: .asciiz " "
blank: .byte ' '
endl: .asciiz " "
endl2: .asciiz " "
.text
.globl main
main:
# Print starting text
la $a0, text
li $v0, SYS_PRINT_TEXT
syscall
# ----------------------------------------------------------------
# Create the bit pattern with a 1 where each blanks exists
# ----------------------------------------------------------------
la $s7, end_text # s7 = ending address for loop
la $s1, text # s1 = text address
move $s0, $zero # s0 = the bit pattern
loop1:
sll $s0,$s0,1 # shift pattern left
lbu $t2, 0($s1) # get 'text' byte
li $t1, BLANK
bne $t1, $t2, noBlank # compare with BLANK
# set s0 bit0 for BLANK, else skip to noBlank, not setting bit0
ori $s0, $s0, 1
noBlank:
addiu $s1, $s1, 1 # move to next character
bne $s1, $s7, loop1 # loop1 if not done (s1 != s7)
move $a0, $s0 # print s0 pattern
li $v0, SYS_PRINT_BIN
syscall
la $a0, endl
li $v0, SYS_PRINT_TEXT
syscall
# ----------------------------------------------------------------
# Duplicate bit pattern, Rotate left, AND the two patterns
# should be where extra blanks exist
# ----------------------------------------------------------------
# print the AND pattern
# ----------------------------------------------------------------
# Copy 'text' into 'result' for each zero bit in s3 pattern
# ----------------------------------------------------------------
# ending s7 'end_text' address #DO ALL THESE COMMENTS IT SAYS WHAT NEEDS TO BE DONE
# source address 'text' in s0
# destination address 'result' in s1
loop2:
# rotate high bit to bit0
# test bit0
# skip if bit0 is 1
# get character at (s0)
# save character in (s1)
# advance s1 'result' address
skip:
# advance s0 'text' address
# loop2 if not done (s0 != s7)
# print 'result'
#---- terminate ---
exit:
li $v0, SYS_EXIT
syscall
#.end main
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
