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