<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#
# Búsqueda lineal en arreglos
# 
# El procedimiento de búsqueda regresa:
#	1 si el elemento está en el arreglo
#	0 si no está
#

	.data
A:      .word 22, 6, 16, 15, 2, 11, 14, 3       # arreglo
n:	.word 8					# número de elementos
x:	.word 0					# número a buscar
m1:	.asciiz "Escribe el número a buscar: "
m2: .asciiz "El número no está."
m3: .asciiz "El número si está."

	.text
#
# Procedimiento main
#

main:
# Lee el número a buscar
	la $a0, m1
	li $v0, 4 # print_str
	syscall

	li $v0, 5 # read_int
	syscall
	la $t0, x		# t0 apunta a x
	sw $v0, ($t0)		# guarda v0 en x

# Llama a la búsqueda lineal
	la $a0, A		# dirección del arreglo
	la $a1, n		# tamaño del arreglo
	la $a2, x		# direccion del número a buscar
	jal bus_lin

# Escribe el resultado
	move $t0, $v0		# t0 = v0
	beq $t0, $zero, no_esta	# if (t0 == 0) goto no_esta
	la $a0, m3		# a0 apunta al string "si esta"
	j imprime

no_esta:
	la $a0, m2		# a0 apunta al string "no esta"

imprime:
	li $v0, 4		# print_str
	syscall

# The program is finished. Exit.
	li $v0, 10          	# system call for exit
	syscall               	# Exit!

#
# Procedimiento bus_lin
#

bus_lin:
	lw $s0, ($a1)		# s0 = n
	lw $s1, ($a2)		# s1 = x

ciclo:
	beq $s0, $zero, falla	# if (s0 == 0) goto falla
	lw $s2, ($a0)		# s2 = arreglo[a0]
	beq $s1, $s2, exito	# if (s1 == s2) goto exito
	addi $a0, $a0, 4	# a0 apunta al siguiente elemento
	addi $s0, $s0, -1	# s0--
	j ciclo

exito:
	li $v0, 1		# regresa 1 (exito)
	j regresa

falla:
	li $v0, 0		# regresa 0 (falla)

regresa:
	jr $31
</pre></body></html>