You are on page 1of 2

.

globl main

.data
myDataArray: .space 40 # Space for an array of 10 elements
myArray: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
myNumber: .word 4

.text
main:
la t0, myNumber
lw a0, 0(t0)
la sp, myDataArray
jal ra, processArray

# Exit program
li a7, 10
ecall

processArray:
addi sp, sp, -4
sw ra, 0(sp)

addi s0, x0, 0 # Counter variable


la t0, myArray
la sp, myDataArray
sw t0, 0(sp)

lw s1, 0(t0)
loop:
addi t0, x0, 10
add s3, a0, x0

beq s0, t0, exit

add a1, s0, x0


jal ra, customComparison
add t1, a0, x0

lw t2, 0(sp)
slli s2, s0, 2
add t2, s2, t2

# Print array[i] before storing to it (optional)


addi a0, x0, 1
add a1, t1, x0
ecall
addi a1, x0, ' '
addi a0, x0, 11
ecall

sw t1, 0(t2)

add a0, s3, x0


addi s0, s0, 1
jal ra, loop

exit:
lw ra, 0(sp)
addi sp, sp, 4
jr ra

customComparison:
addi sp, sp, -4
sw ra, 0(sp)

jal ra, subtract


bge a0, x0, return1
addi a0, x0, 0

lw ra, 0(sp)
addi sp, sp, 4
jr ra

return1:
addi a0, x0, 1
lw ra, 0(sp)
addi sp, sp, 4
jr ra

subtract:
sub a0, a0, a1
jr ra

You might also like