Я действительно новичок в этом, так что даже не уверен, что я даже код это правильно. Мой первый раз на самом деле. Итак, я думаю, что сделал все правильно? Я не уверен, почему он не выйдет из l oop, поскольку beq $t1, $t0, winExit
должен заставить его выйти из моего l oop. Та же проблема и с LExExit. Может быть, это все неправильно ... если это плохо>.>
# The program will ask the player to try to guess the secret number
# and receive a numerical input from the players.
.data
# constant strings
prompt1: .asciiz "Please guess the secret number (up to 10 tries): "
tooHigh: .asciiz "Incorrect: Number is too high\n"
tooLow: .asciiz "Incorrect: Number is too low\n"
userWin: .asciiz "Congratulation! You guessed the secret number! :D"
userLose: .asciiz "Sorry, You lose :/"
.text
main:
#start of the loop
loop:
#Set secret number
li $t0,4 #$t0 hold the secret number: 4
li $t1,9 #$t1 hold the maximum number of tries: 10
li $t2,0 #$t2 hold the number of tries. (counter)
#Prompt user for a number
li $v0,4 #code for print_string
la $a0,prompt1 #point to $a0 to prompt strings
syscall #print prompt
#Get integer from user
li $v0,5 #code for read_int
syscall #get integer from user --> returned in $v0
move $s0,$v0 #move the resulting int to $s0
#$s0 hold the guess number
#check if it is equal, if it is then exit loop
beq $t1, $t0, winExit #Brand if Equal. User guess the correct number.
addi $t2,$t2,1 # +1 to counter
beq $t2,$t1, loseExit #check if counter reach the maximum number
blt $s0,$t0, lessThan #Branch on Lower Than. check if guess number is less than secret number
bgt $s0,$t0, greaterThan #Branch on Greater Than. check if guess number is higher than secret number
j loop #goes back to loop
#prompt guess number is too high then loop
greaterThan:
li $v0,4 #code for print_string
la $a0, tooHigh #point $a0 to tooLow string
syscall #print prompt
j loop
#go back to loop
#prompt guess number is too low then loop
lessThan:
li $v0,4 #code for print_string
la $a0, tooLow #point $a0 to tooLow string
syscall #print prompt
j loop #go back to loop
#print userWin to congratulate user
winExit:
li $v0,4 #code for print_string
la $a0, userWin #point $a0 to userWin string
syscall #print prompt
j exitProgram
#print userLose to user
loseExit:
li $v0,4 #code for print_string
la $a0, userLose #point $a0 to userLose string
syscall #print prompt
j exitProgram
#Exit program
exitProgram:
li $v0,10 #code for exit
syscall #exit program