MIPS程序集中的确认对话框

时间:2016-08-01 01:20:56

标签: assembly mips

我在使用MIPS中的确认对话框时遇到问题:

.data
Welcome1:.asciiz  "\n Hello! you are about to play the mastermind guessing and logic game,Bulls & Cows!\n The Computer will generate a secret numbermade of 4 unique integer number.You have to guess the number!\n Using the number of Bulls and Cows you get to find out what the secret number is!\n"
Welcome2: .asciiz "\nEvery digit you enter that is both correct and in the right location is a BULL. When you get 4 BULLS, YOU WIN!\n\nEvery digit you enter that is correct, but not in the right location is a COW!\n"
confirm: .asciiz "\n Select \nYES - if you are ready to guess \n NO - to see the rules again \n Cancel - to exit the Game\n"
.text
main:jal welcome
welcome:
la  $a0,Welcome1
li $a1,1
li $v0, 55
syscall

la,$a0,Welcome2
li $v0,55
syscall

la $a0,confirm
li $v0,50

syscall


Exit:
li $v0,10
syscall

1 个答案:

答案 0 :(得分:0)

显然,你需要做更多工作才能让游戏正常运行,但我已经能够获得一个骨架框架[请原谅无偿的风格清理]:

    .data

Welcome1:
    .ascii  "\n Hello! you are about to play the mastermind"
    .ascii  " guessing and logic game,Bulls & Cows!\n"
    .ascii  "The Computer will generate a secret number made of 4 unique"
    .ascii  " integer numbers. You have to guess the number!\n"
    .ascii  "Using the number of Bulls and Cows you get to find out what"
    .asciiz " the secret number is!\n"

Welcome2:
    .ascii  "\nEvery digit you enter that is both correct and in the right"
    .ascii  " location is a BULL. When you get 4 BULLS, YOU WIN!\n\n"
    .ascii  "Every digit you enter that is correct, but not in the right"
    .asciiz " location is a COW!\n"

confirm:
    .ascii  "\n Select \n"
    .ascii  "YES - if you are ready to guess\n"
    .ascii  "NO - to see the rules again\n"
    .asciiz "Cancel - to exit the Game\n"

msg_asknum:
    .asciiz "\nEnter your game choice\n"

    .text

main:

    # show intro and rules
main_welcome:
    la      $a0,Welcome1
    li      $a1,1
    li      $v0,55
    syscall

    la      $a0,Welcome2
    li      $v0,55
    syscall

    # ask user to select an action (i.e. enter data, reread rules, exit program)
main_confirm:
    la      $a0,confirm
    li      $v0,50
    syscall

    # the return is in a0: 0=yes, 1=no, 2=cancel
    beq     $a0,0,main_asknum
    beq     $a0,2,main_exit
    b       main_welcome

    # ask user for the next game input
    # NOTE: this is a prompt for an integer number
main_asknum:
    li      $v0,51
    la      $a0,msg_asknum
    syscall

    beq     $a1,-1,main_asknum      # syntax error
    beq     $a1,-2,main_confirm     # cancel
    beq     $a1,-3,main_asknum      # ok, but no data

    jal     do_something            # do something with the number in a0 ...

    j       main_asknum

main_exit:
    li      $v0,10
    syscall

# do_something -- process user's input
#
# arguments:
#   a0 -- number the user entered
do_something:
    jr      $ra                     # return