6.2Search (&X,N,V,L)
编写一个函数︰按顺序搜索大小为N个字节的数组×,获得值V存放在数组中的相对
位置L。输入参数&X、N和V通过栈传递给函数,函数的返回值即相对位置L(从1到N
范围内的某个数字)也通过栈传递。如果未找到值V,则返回-1。
.data
arr:.byte 12,21,52,23,52,13
.text
main:
la $t0,arr
li $t1,6 #len
li $t2,13 #x
addiu $sp,$sp,-20
sw $t0,0($sp) # &arr
sw $t1,4($sp) #len
sw $t2,8($sp) # x
sw $ra,16($sp)
jal Search
lw $ra,16($sp)
lw $t3,12($sp) # ok?
addiu $sp,$sp,20
li $v0,10
syscall
Search:
lw $a0,0($sp) #&arr
lw $a1,4($sp) #len
lw $a2,8($sp) #x
li $t0,0 # i
li $t1,0 # arr[i]
addi $t2,$a1,-1
loop:
beq $t1,$a2,out
bgt $t0,$t2,fail
#mul $t1,$t0,1
add $t1,$t0,$a0
lb $t1,($t1)
addi $t0,$t0,1
b loop
out:
move $v0,$t0
sb $v0,12($sp)
jr $ra
fail:
li $v0,-1
sw $v0,12($sp)
jr $ra