Hey everyone,
I am trying to create a random number generator with MIPS assembly. I have most of the code written, I just need to change my set number for a guessing game to a random number. I also want to ask the user if they'd like to play again. The formula I am using is r=(r*3+1)%10. User must enter a seed. How do I write this?
Here is my code:
.data
guessString: .asciiz "\nGuess a number: "
tooHigh: .asciiz "Your guess is too high. Guess lower."
tooLow: .asciiz "Your guess is too low. Guess higher."
correctGuess: .asciiz "Your guess is correct!"
outOfGuesses: .asciiz "Out of guesses!"
guessesRemaining: .asciiz "\nNumber of guesses remaining: "
instructions: .asciiz "Welcome. You have 10 tries to guess\n the correct number between 1 - 1000."
quit: .asciiz "To quit enter 0."
.text
main:
# Loads instructions
la $a0, instructions
li $v0, 4
syscall
# Sets number, counter, low and high limit
li $t9, 749
li $t8, 10
li $t6, 0
li $t7, 1001
# Loopy Loop
loop:
# Guess counter
li $v0, 4
la $a0, guessesRemaining
syscall
# Moves guessesRemaining to a temporary folder
move $a0, $t8
li $v0, 1
syscall
# Guess a number
li $v0, 4
la $a0, guessString
syscall
li $v0, 5
syscall
move $s0, $v0
# Player chooses to exit
ble $s0, $t6, quitGame
bge $s0, $t7, quitGame
# Player won
beq $s0, $t9, win
# Counter if wrong or branch to zero
sub $t8, $t8, 1
beqz $t8, loss
# Guess too high
bgt $s0, $t9, guessTooHigh
# Guess too low
blt $s0, $t9, guessTooLow
# Tags for win, loss if equal to 0, guess too high/too low
win:
li $v0, 4
la $a0, correctGuess
syscall
li $v0, 10
syscall
loss:
li $v0, 4
la $a0, outOfGuesses
syscall
li $v0, 10
syscall
guessTooHigh:
li $v0, 4
la $a0, tooHigh
syscall
b loop
guessTooLow:
li $v0, 4
la $a0, tooLow
syscall
b loop
quitGame:
li $v0, 4
la $a0, quit
syscall
li $v0, 10
syscall