Question: Please find the missing code in the following MIPS assembly hangman program. .data alph1: .asciiz q w e r t y u i o p
Please find the missing code in the following MIPS assembly hangman program.
.data
alph1: .asciiz "q w e r t y u i o p "
alph2: .asciiz " a s d f g h j k l "
alph3: .asciiz " z x c v b n m "
found1: .word 0
w7a0: .asciiz "ability"
w7a1: .asciiz "balloon"
w7a2: .asciiz "digital"
w7a3: .asciiz "explain"
w7a4: .asciiz "private"
w7a5: .asciiz "address"
w7a6: .asciiz "respect"
w7a7: .asciiz "plastic"
w7a8: .asciiz "nuclear"
w7a9: .asciiz "theater"
words7:
.word w7a0
.word w7a1
.word w7a2
.word w7a3
.word w7a4
.word w7a5
.word w7a6
.word w7a7
.word w7a8
.word w7a9
a0: .asciiz "building"
a1: .asciiz "amputate"
a2: .asciiz "opposite"
a3: .asciiz "sunshine"
a4: .asciiz "detector"
a5: .asciiz "function"
a6: .asciiz "mushroom"
a7: .asciiz "prospect"
a8: .asciiz "ambition"
a9: .asciiz "reliable"
words:
.word a0
.word a1
.word a2
.word a3
.word a4
.word a5
.word a6
.word a7
.word a8
.word a9
w9a0: .asciiz "blackmail"
w9a1: .asciiz "advantage"
w9a2: .asciiz "encourage"
w9a3: .asciiz "translate"
w9a4: .asciiz "precision"
w9a5: .asciiz "principle"
w9a6: .asciiz "operation"
w9a7: .asciiz "cathedral"
w9a8: .asciiz "butterfly"
w9a9: .asciiz "condition"
words9:
.word w9a0
.word w9a1
.word w9a2
.word w9a3
.word w9a4
.word w9a5
.word w9a6
.word w9a7
.word w9a8
.word w9a9
guess: .asciiz " Guess a letter or 0 to quit"
loseTest: .asciiz " You Lose "
blanks7: .asciiz "__ __ __ __ __ __ __ "
blanks: .asciiz "__ __ __ __ __ __ __ __ "
blanks9: .asciiz "__ __ __ __ __ __ __ __ __ "
winner: .asciiz " Congratulations, you have won! "
usedAlpha: .asciiz " Invalid input. Choose available letters below "
line: .asciiz " "
wrong: .asciiz "Wrong"
replaced: .word '0'
totalWrong: .word 0
wordSize: 8
#Hangman
hm1: .asciiz "_______ "
hm2: .asciiz "|/ | "
hm3: .asciiz "| (_) "
hm4a:.asciiz "| | "
hm4b:.asciiz "| \\| "
hm4c:.asciiz "| \\|/ "
hm5: .asciiz "| | "
hm6a:.asciiz "| / "
hm6b:.asciiz "| / \\ "
hm7: .asciiz "| "
hm8: .asciiz "|_____"
he3: .asciiz "| "
he4: .asciiz "| "
he5: .asciiz "| "
he6: .asciiz "l "
.text
main:
#random number to pick 7 or 8 or 9 letter word
li $a1, 1
li $v0, 42
xor $a0, $a0, $a0
syscall
add $a0, $a0, 7
### Store that number in wordSize variable
sw $a0, wordSize
###
#random number for to see which word to choose
li $a1, 110
li $v0, 42
xor $a0, $a0, $a0
syscall
###
#load the wordSize
li $t1, 0
lw $t1, wordSize ($t1)
#go to appropriate word size based on random number
beq $t1, 7, wordSize7
beq $t1, 8, wordSize8
beq $t1, 9, wordSize9
wordSize7:
sll $a0, $a0, 2
lw $s7, words7($a0)
j continueMain
wordSize8:
sll $a0, $a0, 2
lw $s7, words($a0)
j continueMain
wordSize9:
sll $a0, $a0, 2
lw $s7, words9($a0)
j continueMain
# now we have a word in $s7
continueMain:
# print word
# move $a0, $s7
# li $v0, 4
# syscall
# print line
la $a0, line
li $v0, 4
syscall
printEmptyHangman:
#Print empty hangman
# line 1
la $a0, hm1
li $v0, 4
syscall
# line 2
la $a0, hm2
li $v0, 4
syscall
# line 3
la $a0, he3
li $v0, 4
# line 4
la $a0, he4
li $v0, 4
syscall
# line 5
la $a0, he5
li $v0, 4
syscall
# line 6
la $a0, he6
li $v0, 4
syscall
# live 7
la $a0, hm7
li $v0, 4
syscall
syscall
# line 8
la $a0, hm8
li $v0, 4
syscall
#
j continueMain2
chooseBlanksSize:
# load wordSize again to see how many blanks to print
li $t1, 0
lw $t1, wordSize($t1)
##
##
beq $t1, 7, pBlanks7
beq $t1, 8, pBlanks
beq $t1, 9, pBlanks9
pBlanks7:
la $a0, blanks7
addi $sp, $sp, -4 #make space for two words
sw $a0, 4($sp) # store $a0
jr $ra
pBlanks:
la $a0, blanks
addi $sp, $sp, -4 #make space for two words
sw $a0, 4($sp) # store $a0
jr $ra
pBlanks9:
la $a0, blanks9
addi $sp, $sp, -4 #make space for two words
sw $a0, 4($sp) # store $a0
jr $ra
continueMain2:
jal chooseBlanksSize
li $v0, 4 # print blanks
syscall
jal printAlph
li $s4, 0 #total correct, keep track of how many correct, when all 8 correct,
li $t7, 0 #total run counteer, keep track of how many correct, when all 8 correct,
j run
runAgain:
li $t1, 0
lw $t1, wordSize($t1)
beq $s4, $t1, win
add $s7, $s6, $zero
li $t1, '0'
la $t3, replaced
sb $t1, ($t3)
##Print Updated Alphabets
jal printAlph
##
##
jal chooseBlanksSize
li $v0, 4
syscall
##
la $a0, line
##
j run
run:
li $s3, 0 # char count variable so when this goes to o, and no char found, we
# print "Guess a letter"
li $t7, 0
la $a0, guess
li $v0, 4
syscall
li $s0, 0
# get user input in $v0
li $v0, 12
syscall
#put the read input in $t0
move $t0, $v0
jal searchAlph1
#erase that input from alphabet
jal findAlph
#li $t1, 0 # it's not found yet
#la $s0, words # set pointer to words(0)
add $s6, $s7, $zero
lb $s1, ($s7) # get first char at the word
search:
beq $t0, 0, quit # check for terminator
##
##
seq $t1, $s1, $t0 # if s1 == t0, t1 = 1, else t1 = 0
beq $t1, $zero, cheqEnd # if t1 = 0, go to cheqEnd
beq $t1, 1, found
cheqEnd:
# load word size
li $t1, 0
lw $t1, wordSize($t1)
blt $s3, $t1, nextChar # bit $s3, 8, nextChar
la $t1, replaced
lb $t1, ($t1)
beq $t1, '1', runAgain
li $t1, 0
lw $t1, wordSize($t1)
beq $s3, $t1, notFound # beq $s3, 8, notFound
nextChar:
add $s3, $s3, 1 #char counter
addi $s7, $s7, 1 # no. step to next vowel
lb $s1, ($s7) # load next voewl
b search
found:
li $s3, 0 # set search counter to 0
la $a0, line
li $v0, 4
syscall
li $a0, 90
li $a1, 675
la $a2, 14
li $a3, 115
li $v0, 33
syscall
beq $t7, 0, r1
beq $t7, 1, r2
beq $t7, 2, r3
beq $t7, 3, r4
beq $t7, 4, r5
beq $t7, 5, r6
beq $t7, 6, r7
beq $t7, 7, r8
beq $t7, 8, r9
ri:
lb $t3, 0($s6) # load first byte
beq $t0, $t3, letter1
add $t7, $t7, 1
lb $t3, 1($s6) # load first byte
beq $t0, $t3, letter2
add $t7, $t7, 1
lb $t3, 2($s6) # load first byte
beq $t0, $t3, letter3
add $t7, $t7, 1
lb $t3, 3($s6) # load first byte
beq $t0, $t3, letter4
add $t7, $t7, 1
lb $t3, 4($s6) # load first byte
beq $t0, $t3, letter5
add $t7, $t7, 1
lb $t3, 5($s6) # load first byte
beq $t0, $t3, letter6
add $t7, $t7, 1
lb $t3, 6($s6) # load first byte
beq $t0, $t3, letter7
add $t7, $t7, 1
lb $t3, 7($s6) # load first byte
beq $t0, $t3, letter8
add $t7 $t7, 1
lb $t3, 8($s6) # load first byte
beq $t0, $t3, letter9
add $t7, $t7, 1
j runAgain
r2:
lb $t3, 1($s6) # load first byte
beq $t0, $t3, letter2
add $t7, $t7, 1
lb $t3, 2($s6) # load first byte
beq $t0, $t3, letter3
add $t7, $t7, 1
lb $t3, 3($s6) # load first byte
beq $t0, $t3, letter4
add $t7, $t7, 1
lb $t3, 4($s6) # load first byte
beq $t0, $t3, letter5
add $t7, $t7, 1
lb $t3, 5($s6) # load first byte
beq $t0, $t3, letter6
add $t7, $t7, 1
lb $t3, 6($s6) # load first byte
beq $t0, $t3, letter7
add $t7, $t7, 1
lb $t3, 7($s6) # load first byte
beq $t0, $t3, letter8
add $t7, $t7, 1
lb $t3, 8($s6) # load first byte
beq $t0, $t3, letter9
add $t7, $t7, 1
j runAgain
r3:
lb $t3, 2($s6) # load first byte
beq $t0, $t3, letter3
add $t7, $t7, 1
lb $t3, 3($s6) # load first byte
beq $t0, $t3, letter4
add $t7, $t7, 1
lb $t3, 4($s6) # load first byte
beq $t0, $t3, letter5
add $t7, $t7, 1
lb $t3, 5($s6) # load first byte
beq $t0, $t3, letter6
add $t7, $t7, 1
lb $t3, 6($s6) # load first byte
beq $t0, $t3, letter7
add $t7, $t7, 1
lb $t3, 7($s6) # load first byte
beq $t0, $t3, letter8
add $t7, $t7, 1
lb $t3, 8($s6) # load first byte
beq $t0, $t3, letter9
add $t7, $t7, 1
j runAgain
r4:
lb $t3, 3($s6) # load first byte
beq $t0, $t3, letter4
add $t7, $t7, 1
lb $t3, 4($s6) # load first byte
beq $t0, $t3, letter5
add $t7, $t7, 1
lb $t3, 5($s6) # load first byte
beq $t0, $t3, letter6
add $t7, $t7, 1
lb $t3, 6($s6) # load first byte
beq $t0, $t3, letter7
add $t7, $t7, 1
lb $t3, 7($s6) # load first byte
beq $t0, $t3, letter8
add $t7, $t7, 1
lb $t3, 8($s6) # load first byte
beq $t0, $t3, letter9
add $t7, $t7, 1
j runAgain
r5:
lb $t3, 4($s6) # load first byte
beq $t0, $t3, letter5
add $t7, $t7, 1
lb $t3, 5($s6) # load first byte
beq $t0, $t3, letter6
add $t7, $t7, 1
lb $t3, 6($s6) # load first byte
beq $t0, $t3, letter7
add $t7, $t7, 1
lb $t3, 7($s6) # load first byte
beq $t0, $t3, letter8
add $t7, $t7, 1
lb $t3, 8($s6) # load first byte
beq $t0, $t3, letter9
add $t7, $t7, 1
j runAgain
r6:
lb $t3, 5($s6) # load first byte
beq $t0, $t3, letter6
add $t7, $t7, 1
lb $t3, 6($s6) # load first byte
beq $t0, $t3, letter7
add $t7, $t7, 1
lb $t3, 7($s6) # load first byte
beq $t0, $t3, letter8
add $t7, $t7, 1
lb $t3, 8($s6) # load first byte
beq $t0, $t3, letter9
add $t7, $t7, 1
j runAgain
r7:
lb $t3, 6($s6) # load first byte
beq $t0, $t3, letter7
add $t7, $t7, 1
lb $t3, 7($s6) # load first byte
beq $t0, $t3, letter8
add $t7, $t7, 1
lb $t3, 8($s6) # load first byte
beq $t0, $t3, letter9
add $t7, $t7, 1
j runAgain
r8:
lb $t3, 7($s6) # load first byte
beq $t0, $t3, letter8
add $t7, $t7, 1
lb $t3, 8($s6) # load first byte
beq $t0, $t3, letter9
add $t7, $t7, 1
j runAgain
r9:
lb $t3, 8($s6) # load first byte
beq $t0, $t3, letter9
add $t7, $t7, 1
j runAgain
letter1:
lb $t3, 0($s6) # load first byte
li $t4, ' '
jal chooseBlanksSize
lw $a0, 4($sp) # restore
addi $sp, $sp, 4
lb $t5, 0($a0)
bne $t5, $t3 goLetter1
j runAgain
goLetter1:
sb $t3, 0($a0)
sb $t4, 1($a0)
li $t1, ' '
la $t3, replaced
sb $t1, ($t3)
add $s4, $s4, 1
add $t7, $t7, 1
j nextChar
letter2:
lb $t3, 1($s6) # load first byte
li $t4, ' '
jal chooseBlanksSize
lw $a0, 4($sp)
addi $sp, $sp, 4
lb $t5, 3($a0)
bne $t5, $t3 goLetter2
j runAgain
goLetter2:
sb $t3, 0($a0)
sb $t4, 4($s6)
li $t1, ' '
la $t3, replaced
add $s4, $s4, 1
add $t7, $t7, 1
j nextChar
letter3:
lb $t3, 2($s6) # load first byte
li $t4, ' '
jal chooseBlanksSize
lw $a0, 4($sp)
addi $sp, $sp, 4
lb $t5, 6($s0)
bne $t5, $t3 goLetter3
jal chooseBlanksSize
li $v0, 4
syscall
j runAgain
goLetter3:
sb $t3, 6($a0)
sb $t4, 7($a0)
li $t1, '1'
la $t3, replaced
sb $t1, ($t3)
add $s4, $s4, 1
add $t7, $t7, 1
j nextChar
letter4:
lb $t3, 3($s6) # load first byte
li $t4, ' '
jal chooseBlanksSize
lw $a0, 4($sp) # restore $a0
addi $sp, $sp, 4 # restore $sp
lb $t5, 9($a0) # get the first char of blanks and see if it's already 'c'
bne $t5, $t3, goLetter4
j RunAgain
goLetter4:
sb $t3, 9($a0)
sb $t4, 10($a0)
li $t1, '1'
la $t3, replaced
sb $t1, ($t3)
add $s4, $s4, 1
add $t7, $t7, 1
j nextChar
letter5:
lb $t3, 4($s6) # load first byte
li $t4, ' '
jal chooseBlanksSize
lw $a0, 4($sp)
addi $sp, $sp, 4
lb $t5, 12($s0)
bne $t5, $t3 goLetter5
j runAgain
goLetter5:
sb $t3, 12($a0)
sb $t4, 13($a0)
li $t1, '1'
la $t3, replaced
sb $t1, ($t3)
add $s4, $s4, 1
add $t7, $t7, 1
j nextChar
letter6:
lb $t3, 5($s6) # load first byte
li $t4, ' '
jal chooseBlanksSize
lw $a0, 4($sp)
addi $sp, $sp, 4
lb $t5, 15($s0)
bne $t5, $t3 goLetter6
j runAgain
goLetter6:
sb $t3, 15($a0)
sb $t4, 16($a0)
li $t1, '1'
la $t3, replaced
sb $t1, ($t3)
add $s4, $s4, 1
add $t7, $t7, 1
jal chooseBlanksSize
j nextChar
letter7:
lb $t3, 6($s6) # load first byte
li $t4, ' '
jal chooseBlanksSize
lw $a0, 4($sp)
addi $sp, $sp, 4
lb $t5, 18($s0)
bne $t5, $t3 goLetter7
j runAgain
goLetter7:
sb $t3, 18($a0)
sb $t4, 19($a0)
li $t1, '1'
la $t3, replaced
sb $t1, ($t3)
add $s4, $s4, 1
add $t7, $t7, 1
jal chooseBlanksSize
j nextChar
letter8:
lb $t3, 7($s6) # load first byte
li $t4, ' '
jal chooseBlanksSize
lw $a0, 4($sp)
addi $sp, $sp, 4
lb $t5, 21($s0)
bne $t5, $t3 goLetter8
j runAgain
goLetter8:
sb $t3, 21($a0)
sb $t4, 22($a0)
li $t1, '1'
la $t3, replaced
sb $t1, ($t3)
add $s4, $s4, 1
add $t7, $t7, 1
jal chooseBlanksSize
j nextChar
li $a0, 90
li $a1, 675
la $a2, 14
li $a3, 115
li $v0, 33
syscall
##
la $a0, line
li $v0, 4
syscall
la $a0, wrong
li $v0, 4
syscall
la $a0, line
li $v0, 4
syscall
# Wrong Counter +1
li $t1, 0
lw, $t1, totalWrong($t1)
add $t1, $t1, 1
loose:
la $a0, looseText
li $v0, 4
syscall
la $a0, line
li $v0, 4
syscall
move $a0, $s6
li $v0, 4
syscall
j quit
win:
la $a0, winner
li $v0, 4
syscall
la $a0, line
li $v0, 4
syscall
move $a0, $s6
li $v0, 4
syscall
j quit
quit:
li $v0, 10
syscall
rn1:
#Print empty hangman
# Line 1
la $a0, hm1
li $v0, 4
syscall
# line 2
la $a0, hm2
li $v0, 4
syscall
# Line 3
la $a0, hm3
li $v0, 4
syscall
# line 4
la $a0, hm4
li $v0, 4
syscall
# line 5
la $a0, hm5
li $v0, 4
syscall
# line 6
la $a0, hm6
li $v0, 4
syscall
# line 7
la $a0, hm7
li $v0, 4
syscall
j cm2
rn3:
#Print empty hangman
# line 1
la $a0, hm1
li $v0, 4
syscall
# line 2
la $a0, hm2
li $v0, 4
syscall
# line 3
la $a0, hm3
li $v0, 4
syscall
# line 4
la $a0, hm4b
li $v0, 4
syscall
# line 5
la $a0, he5
li $v0, 4
syscall
# line 6
la $a0, he6
li $v0, 4
syscall
# line 7
la $a0, hm7
li $v0, 4
syscall
# line 8
la $a0, hm8
li $v0, 4
syscall
#
j cm3
rn4:
# Print empty hangman
# line 1
la $a0, hm1
li $v0, 4
syscall
# line 2
la $a0, hm2
li $v0, 4
syscall
# line 3
la $a0, hm3
li $v0, 4
syscall
# line 4
la $a0, hm4c
li $v0, 4
syscall
# line 5
la $a0, he5
li $v0, 4
syscall
# line 6
la $a0, he6
li $v0, 4
syscall
# line 7
la $a0, hm7
li $v0, 4
syscall
# line 8
la $a0, hm8
li $v0, 4
syscall
#
j cm4
rn5:
# Print empty hangman
# line 1
la $a0, hm1
li $v0, 4
syscall
# line 2
la $a0, hm2
li $v0, 4
syscall
# line 3
la $a0, hm3
li $v0, 4
syscall
# line 4
la $a0, hm4c
li $v0, 4
syscall
# line 5
la $a0, hm5
li $v0, 4
syscall
# line 6
la $a0, he6
li $v0, 4
syscall
# line 7
la $a0, hm7
li $v0, 4
syscall
# line 8
la $a0, hm8
li $v0, 4
syscall
#
j cm5
rn6:
# Print empty hangman
# line 1
la $a0, hm1
li $v0, 4
syscall
# line 2
la $a0, hm2
li $v0, 4
syscall
# line 3
la $a0, hm3
li $v0, 4
syscall
# line 4
la $a0, hm4c
li $v0, 4
syscall
# line 5
la $a0, hm5
li $v0, 4
syscall
# line 6
la $a0, hm6a
li $v0, 4
syscall
# line 7
la $a0, hm7
li $v0, 4
syscall
syscall
# line 8
la $a0, hm8
li $v0, 4
syscall
#
j cm6
rn7:
# Print empty hangman
# line 1
la $v0, hm1
li $v0, 4
syscall
# line 2
la $a0, hm2
li $v0, 4
syscall
# line 3
la $a0, hm3
li $v0, 4
syscall
# line 4
la $a0, hm4c
li $v0, 4
syscall
# line 5
la $a0, hm5
li $v0, 4
syscall
# line 6
la $a0, hm6a
li $v0, 4
syscall
# line 7
la $a0, hm7
li $v0, 4
syscall
syscall
#line 8
la $a0, hm8
li $v0, 4
syscall
#
j cm6
rn8:
# Print empty hangman
# line 1
la $a0, hm1
li $v0, 4
syscall
# line 2
la $a0, hm2
li $v0, 4
syscall
# line 3
la $a0, hm3
li $v0, 4
syscall
# line 4
la $a0, hm4c
li $v0, 4
syscall
# line 5
la $a0, hm5
li $v0, 4
syscall
# line 6
la $a0, hm6b
li $v0, 4
syscall
# line 7
la $a0, hm7
li $v0, 4
syscall
syscall
# line 8
la $a0, hm8
li $v0, 4
syscall
#
j loose
printAlph:
# print alphabets
la $a0, line
li $v0, 4
syscall
la $a0, alph1
li $v0, 4
syscall
la $a0, alph2
li $v0, 4
syscall
la $a0, alph3
li $v0, 4
syscall
jr $ra
##
findAlph:
beq $t0, 'q', er0q
beq $t0, 'w', er0w
beq $t0, 'e', er0e
beq $t0, 'r', er0r
beq $t0, 't', er0t
beq $t0, 'y', er0y
beq $t0, 'u', er0u
beq $t0, 'i', er0i
beq $t0, 'o', er0o
beq $t0, 'p', er0p
beq $t0, 'a', er0a
beq $t0, 's', er0s
beq $t0, 'd', er0d
beq $t0, 'f', er0f
beq $t0, 'g', er0g
beq $t0, 'h', er0h
beq $t0, 'j', er0j
beq $t0, 'k', er0k
beq $t0, 'l', er0l
beq $t0, 'z', er0z
beq $t0, 'x', er0x
beq $t0, 'c', er0c
beq $t0, 'v', er0v
beq $t0, 'b', er0b
beq $t0, 'n', er0n
beq $t0, 'm', er0m
er0q: li $t1, 1 # row number
li, $t8, 0 # row position
j eraseAlph
er0w: li $t1, 1
li $t8, 3
j eraseAlph
er0e: li $t1, 1 # row number
li, $t8, 6 # row position
j eraseAlph
er0r: li $t1, 1 # row number
li, $t8, 9 # row position
j eraseAlph
er0t: li $t1, 1 # row number
li, $t8, 12 # row position
j eraseAlph
er0y: li $t1, 1 # row number
li, $t8, 15 # row position
j eraseAlph
er0u: li $t1, 1 # row number
li, $t8, 18 # row position
j eraseAlph
er0i: li $t1, 1 # row number
li, $t8, 21 # row position
j eraseAlph
er0o: li $t1, 1 # row number
li, $t8, 24 # row position
j eraseAlph
er0p: li $t1, 1 # row number
li, $t8, 27 # row position
j eraseAlph
# Row 2
er0a: li $t1, 2 # row number
li, $t8, 2 # row position
j eraseAlph
er0s: li $t1, 2 # row number
li, $t8, 5 # row position
j eraseAlph
er0d: li $t1, 2 # row number
li, $t8, 8 # row position
j eraseAlph
er0f: li $t1, 2 # row number
li, $t8, 11 # row position
j eraseAlph
er0g: li $t1, 2 # row number
li, $t8, 14 # row position
j eraseAlph
er0h: li $t1, 2 # row number
li, $t8, 17 # row position
j eraseAlph
er0j: li $t1, 2 # row number
li, $t8, 20 # row position
j eraseAlph
er0k: li $t1, 2 # row number
li, $t8, 23 # row position
j eraseAlph
er0l: li $t1, 2 # row number
li, $t8, 26 # row position
j eraseAlph
# Row 3
er0z: li $t1, 3 # row number
li, $t8, 4 # row position
j eraseAlph
er0x: li $t1, 3 # row number
li, $t8, 7 # row position
j eraseAlph
er0c: li $t1, 3 # row number
li, $t8, 10 # row position
j eraseAlph
er0v: li $t1, 3 # row number
li, $t8, 13 # row position
j eraseAlph
er0b: li $t1, 3 # row number
li, $t8, 17 # row position
j eraseAlph
er0n: li $t1, 3 # row number
li, $t8, 20 # row position
j eraseAlph
er0m: li $t1, 3 # row number
li, $t8, 23 # row position
j eraseAlph
eraseAlph:
beq $t1, 1, line1
beq $t1, 2, line2
beq $t1, 3, line3
line1:
la $t9, alph1
addu $t9, $t9, $t8
li $t8, ' '
sb $t8, ($t9)
jr $ra
line2:
la $t9, alph2
addu $t9, $t9, $t8
li $t8, ' '
sb $t8, ($t9)
jr $ra
line3:
la $t9, alph3
addu $t9, $t9, $t8
li $t8, ' '
sb $t8, ($t9)
jr $ra
searchAlph1:
li $s0, 0
la $t9, alph1
lb $t9, ($t8) # first char of the alph line
searchAlph1a:
seq $t1, $t9, $t0
beq $t1, $zero, cheqEndAlph1
beq $t1, 1, foundAlph1
cheqEndAlph1:
blt $s0, 11, nextCharAlph1
beq $s0, 11, notFoundAlph1
nextCharAlph1:
add $s0, $s0, 1
addi $t8, $t8, 3
lb $t9, ($t8)
b searchAlph1a
foundAlph1:
li $s3, 0
jr $ra
notFoundAlph1:
li $s3, 0
li $t1, 0
li $s0, 0
li $t9, 0
j searchAlph2
# row 2
searchAlph2:
li $s0, 0
la $t9, alph2
lb $t9, 2($t8) # first char of the alph line
searchAlph2a:
seq $t1, $t9, $t0
beq $t1, $zero, cheqEndAlph2
beq $t1, 1, foundAlph2
cheqEndAlph2:
blt $s0, 9, nextCharAlph2
beq $s0, 9, notFoundAlph2
nextCharAlph2:
add $s0, $s0, 1
addi $t8, $t8, 3
lb $t9, 2($t8)
b searchAlph2a
foundAlph2:
li $s3, 0
jr $ra
notFoundAlph2:
li $s3, 0
li $t1, 0
li $t9, 0
j searchAlph3
# row 3
searchAlph3:
li $s0, 0
la $t9, alph3
lb $t9, 4($t8) # first char of the alph line
searchAlph3a:
seq $t1, $t9, $t0
beq $t1, $zero, cheqEndAlph3
beq $t1, 1, foundAlph3
cheqEndAlph3:
blt $s0, 8, nextCharAlph3
beq $s0, 8, notFoundAlph3
nextCharAlph3:
add $s0, $s0, 1
addi $t8, $t8, 3
lb $t9, 4($t8)
b searchAlph3a
foundAlph3:
li $s3, 0
jr $ra
notFoundAlph3:
li $s3, 0
li $t1, 0
li $t9, 0
la $a0, usedAlpha
syscall
j runAgain
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
