The assignment deals with implementing a guessing game based on an array of three elements. The program asks to input three numbers, the numbers are compared with the internal array which is generated at random. The program then presents the number of hits and misses. The game continues until the user guesses all elements correctly or three misses are reached. The program uses syscalls to print the strings and reading the numbers from the user and also to generate random numbers. In the solution below, our assembly assignment help doers illustrate how to implement an array guessing game in MIPS.
Creating an Array Guessing Game using Syscalls
.data
array: .space 12 # space for 3 words
input: .space 12
prompt: .asciiz "Input numbers: "
out_msg: .asciiz "Out\n"
good_msg: .asciiz "Good Job!\n"
ball_msg: .asciiz " ball"
strike_msg: .asciiz " strike"
.text
main:
# generate random array
la $a0, array # save in array
li $a1, 3 # fill 3 numbers
jal generate_random
game_loop:
# print prompt
li $v0, 4 # syscall number to print string
la $a0, prompt # string address
syscall
la $s0, input # point to array of input values
li $s1, 3 # read 3 values
read_loop:
# read number
li $v0, 12 # syscall to read a character
syscall
addi $v0, $v0, -48 # convert ascii to integer
sw $v0, 0($s0) # save read value in input array
addi $s0, $s0, 4 # advance to next space in array
# read space
li $v0, 12 # syscall to read a character
syscall
addi $s1, $s1, -1 # decrement number of values to read
bne $s1, $zero, read_loop # read while number is not zero
# look for input numbers in array
la $s0, input # point to array of input values
li $s1, 3 # loop through the 3 values
li $s2, 0 # current index
li $s3, 0 # initialize with 0 balls
li $s4, 0 # initialize with 0 strikes
compare_loop:
lw $a2, 0($s0) # load value to search from input array
addi $s0, $s0, 4 # advance to next space in array
# search for value in array
la $a0, array # load address of array to search value
li $a1, 3 # array size
jal search
slt $t0, $v0, $zero # see if the result is less than zero
bne $t0, $zero, compare_next # if the number was not in the array, go to next
bne $s2, $v0, inc_balls # if the position is not the same, go to increment balls
addi $s4, $s4, 1 # else, increment number of strikes
j compare_next # go to next
inc_balls:
addi $s3, $s3, 1 # increment number of balls
compare_next:
addi $s2, $s2, 1 # increment index
addi $s1, $s1, -1 # decrement number of values to compare
bne $s1, $zero, compare_loop # compare while number is not zero
add $t0, $s3, $s4 # add balls and strikes
beq $t0, $zero, out # if no balls and no strikes, out
beq $s4, 3, good # if 3 strikes, good job
beqz $s3, print_strikes # if no balls, print strikes
addi $a0, $s3, 48 # convert number to ascii
li $v0, 11 # syscall number to print character
syscall
li $v0, 4 # syscall number to print string
la $a0, ball_msg # string address for ball message
syscall
beq $s3, 1, print_space # if only one ball, go to print space
li $a0, 's' # else, add s to make it plural
li $v0, 11 # syscall number to print character
syscall
print_space:
li $a0, ' ' # space character
li $v0, 11 # syscall number to print character
syscall
print_strikes:
beqz $s4, print_nl # if no strikes, print line
addi $a0, $s4, 48 # convert number to ascii
li $v0, 11 # syscall number to print character
syscall
li $v0, 4 # syscall number to print string
la $a0, strike_msg # string address for strike message
syscall
beq $s4, 1, print_nl # if only one strike, go to print newline
li $a0, 's' # else, add s to make it plural
li $v0, 11 # syscall number to print character
syscall
print_nl:
li $a0, 10 # newline character
li $v0, 11 # syscall number to print character
syscall
j game_loop # start game again
out:
# print out
la $a0, out_msg # address of message
li $v0, 4 # syscall number to print string
syscall
j game_loop # start game again
good:
# print good job
la $a0, good_msg # address of message
li $v0, 4 # syscall number to print string
syscall
# exit program
li $v0, 10 # syscall number to exit program
syscall
# Function
# generate_random (arr[], n).
# Fills the given array with random values
# a0 = arr[]
# a1 = n
generate_random:
add $t2, $zero, $a0 # copy address to t2
add $t3, $zero, $a1 # copy number of elements to t3
gen_loop:
# generate random number
li $v0, 42 # syscall to generate random int range
li $a0, 0 # pseudo random generator
li $a1, 9 # generate number between 0 and 8
syscall
addi $a0, $a0, 1 # add 1 to get range 1-9
sw $a0, 0($t2) # save in array
addi $t2, $t2, 4 # advance to next space in array
addi $t3, $t3, -1 # decrement number of elements to generate
bne $t3, $zero, gen_loop # repeat while there are elements
jr $ra # return to caller
# Function
# search (arr[], n, value).
# Searches for a value in the array, returns the index if found, -1 if not found
# a0 = arr[]
# a1 = n
# a2 = value to search
# On return: $v0 = index or -1
search:
li $v0, 0 # start at index 0
search_loop:
lw $t0, 0($a0) # load value from array
addi $a0, $a0, 4 # advance to next space in array
beq $t0, $a2, search_return # if the value is the same as the one in the array, return the index
addi $v0, $v0, 1 # increment index
addi $a1, $a1, -1 # decrement number of elements to search
bne $a1, $zero, search_loop # repeat while there are elements
li $v0, -1 # if we searched all array, return -1 as it was not found
search_return:
jr $ra # return to caller
Similar Samples
Explore our diverse collection of programming assignment samples at ProgrammingHomeworkHelp.com. From Java and Python to C++ and beyond, our curated examples illustrate effective problem-solving techniques. Ideal for students seeking clarity and inspiration, each sample showcases practical applications and coding principles. Enhance your understanding and excel in your programming endeavors with our comprehensive samples."
Data Structures and Algorithms
Data Structures and Algorithms
Data Structures and Algorithms
Data Structures and Algorithms
Data Structures and Algorithms
Data Structures and Algorithms
Data Structures and Algorithms
Java
C++
Data Structures and Algorithms
Data Structures and Algorithms
Data Structures and Algorithms
Data Structures and Algorithms
Data Structures and Algorithms
Data Structures and Algorithms