【MIPS汇编简单算法实例 Lab14】用栈实现函数调用完成 搜索数组中某个值

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

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值