猜猜MIPS中的数字游戏

时间:2015-03-27 02:18:58

标签: assembly mips

我一直在尝试用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  #####
    #############################

0 个答案:

没有答案