我一直在尝试用MIPS编写一个猜谜游戏,我遇到了异常address out of bounds at line 28
。
我该如何调试?
我需要使用util.s模块。它已在作业中指定。
.include "util.s"
.data
#
msg_welcome: .asciiz "I have a secret number from 1-10, can you guess it?\n"
msg_guess: .asciiz "Guess: "
#
hint_higher: .asciiz "Higher!\n"
hint_lower: .asciiz "Lower!\n"
#
msg_win: .asciiz "Correct! You win!"
.text
#############################################################################
# Generate a random number
#############################################################################
jal random
# $v0 still has the random number, lets put it in t1
add $t1,$zero,$v0
##############################################################################
# got number -- Secret Number is in $t1
##############################################################################
##############################################################################
# start program:
##############################################################################
# >I have a secret number ... can you guess it? [newline]
la $a0, msg_welcome
li $v0, 4 #print string sevice, 4
syscall
USERGUESS: #start of loop!
# >Guess: [wait for user input]
la $a0, msg_guess
li $v0, 4 #print string sevice, 4
syscall
# >User input [will be placed in $v0]
li $v0, 5 #read int service, 5
syscall
# [move users input to a better position -- $t2!]
move $t2, $v0
###############################################################################################
################### USERS GUESS IS STORED IN: ###############
########################################## $ t2 #######################
############# (and the computers secret number is in $t1 #######
###############################################################################################
# [compare] $t1:Secret $s7:userGuess
#if equal, jump to winner, else compare and loop back to guess again
beq $t1, $t2, WINNER
#else:
# figure if higher or lower
blt $t1, $t2, LOWER
#############################
##### default CASE #####
#default, HIGHER:
# Print "HIGHER!"
la $a0, hint_higher
li $v0, 4 #print string sevice, 4
syscall
# loop back to get another guess
j USERGUESS
#### END default #####
#############################
#############################
##### LOWER CASE #####
LOWER:
# Print "LOWER!"
la $a0, hint_lower
li $v0, 4 #print string sevice, 4
syscall
# loop back to get another guess
j USERGUESS
#### END LOWER #####
#############################
#############################
##### WINNER CASE #####
WINNER:
# Print "YOU WIN!"
la $a0, msg_win
li $v0, 4 #print string sevice, 4
syscall
# Terminate the progam: EXIT:
li $v0, 10
syscall
#### END WINNER #####
#############################