.data # variable declarations follow this line
maze: .space 144 # 9x9 stored in a 16x9 buffer
robot_x: .word 0
robot_y: .word 0
robot_m_x: .word 0
robot_m_y: .word 0
robot_instructions: .space 244
MsgRS1: .asciiz "Robot is at a safe place"
MsgRS2: .asciiz "Robot falls into Chasm"
MsgRS3: .asciiz "Robot falls into the trap"
MsgRS4: .asciiz "Robot reaches Destination"
MsgRS5: .asciiz "Robot fails to reach Destination"
.text # CODE SECTION OF ASM FILE
#main:
li $v0,30 # Get time
syscall # CMD: Get Time
# $a0 = lower 32-bits, $a1=upper 32-bits
# Seed RNG (Random Number Generator)
move $a1,$a0 # get lower 32-bit time as seed
li $a0,0 # Rng#0
syscall # CMD: Seed the RNG
# Clear Maze Array
la $t0, maze # load address of maze
li $t3, 0
li $t1, 144
clr: # repeat if not finished yet.
la $t0, maze # base address
li $t3, 2 # maze[1][2] = 2;
sb $t3, 18($t0) # 1 x16 + 2
iSAFE: 1
iCHASM: 2
iTRAP: 3
iDESTINATION: 4
la $t0, maze # base address
li $t3, iSAFE # maze[1][1] = 1;
sb $t3, 0x12($t0) # 1 x 16 + 1
la $t0, maze # base address
li $t3, iCHASM # maze[1][2] = 2; #maze[2][4];
sb $t3, 0x12($t0) # 1 x 16 + 2
la $t0, maze # base address
li $t3, iTRAP # maze[2][3] = 3; # maze[3][4];
sb $t3, 0x12($t0) # 1 x 16 + 3
la $t0, maze # base address
li $t3, iDESTINATION # maze[3][2] = 4;
sb $t3, 0x12($t0) # 1 x 16 + 4
r = (rand() % 3) + 1; 1...4
// $a0 has your random number 1...4
If you subtract 1, then it will set your zero flag
a0 = a0 - 1
if (a0 is not zero)
addi $a0, $a0, -1 //
bnez Try2
# if (r == 1) then // move
robot_x = robot_m_x;
robot_y = robot_m_y + 1;
endif
jr nxt
Try2:
addi $a0, $a0, -1 //
# if (r == 2) // jump
robot_x = robot_m_x;
robot_y = robot_m_y + 2 ;
# endif
jr nxt
addi $a0, $a0, -1
# if (r == 3) // left
robot_x = robot_m_x - 1;
# endif
jr nxt
addi $a0, $a0, -1
# if (r == 4) // Right
robot_x = robot_m_x + 1;
#`endif
jr nxt
nxt:
# Get a Random #
li $a0, 0 # Rng#0
li $a1, 4 # rand() %4 {0...3}
li $v0, 41
syscall # Get RNG
# $a0 = {0...3}
addi $a0, $a0, 1 # $a0 = {1...4}
# Get a Random # li $a0, 0 # Rng#0 li $a1, 4 # rand() %4 {0...3} li $v0, 41 syscall # Get RNG # $a0 = {0...3} addi $a0, $a0, 1 # $a0 = {1...4}
sb $t3, 0($t0) # Set value from array
addi $t0, $t0, 1 # increment Maze address
addi $t1, $t1, -1 # decrement loop counter
bgtz $t1, clr # repeat if not finished yet.
la $a0, MsgRS1 # load address of print heading
li $v0, 4 # specify Print String service
syscall # print heading
# Get a Random #
li $a0, 0 # Rng#
li $a1, 4 # rand() %4 {0...3}
li $v0, 42
syscall # Get RNG
# $a0 = {0...3}
li $v0, 1 # specify Print Integer service
syscall # print number
la $a0, MsgRS2 # load address of print heading
li $v0, 4 # specify Print String service
syscall # print heading
la $a0, MsgRS3 # load address of print heading
li $v0, 4 # specify Print String service
syscall # print heading
la $a0, MsgRS4 # load address of print heading
li $v0, 4 # specify Print String service
syscall # print heading
la $a0, MsgRS5 # load address of print heading
li $v0, 4 # specify Print String service
syscall # print heading
li $v0,30 # Get time
syscall # CMD: Get Time
# $a0 = lower 32-bits, $a1=upper 32-bits
# Seed RNG (Random Number Generator)
move $a1,$a0 # get lower 32-bit time as seed
li $a0,0 # Rng#0
syscall # CMD: Seed the RNG
jr $ra # return
malugirl4
0
Junior Poster in Training
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
wildgoose
420
Practically a Posting Shark
malugirl4
0
Junior Poster in Training
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.