	.data
string:	.asciiz "hallo"
nl:	.asciiz "\n"
chr_l:	.ascii "l"
chr_h:	.ascii "h"
chr_o:	.ascii "o"
chr_x:	.ascii "x"


	.text
	.globl main



strchr:		# procedure to find 1st occurance of character in string
		# arguments: address of string -> $a0
		#            character to search for -> $a1
		# results:   address of (1st occurance of) character -> $v0

	move $v0, $a0
	j sc_loop_cond

sc_loop:
	addi $v0, $v0, 1
sc_loop_cond:
	lbu $t0, 0($v0)
	move $t1, $zero
	move $t2, $zero
	sne $t1, $t0, $a1
	sne $t2, $t0, $zero
	and $t1, $t1, $t2
	bne $t1, $zero, sc_loop

	jr $ra			# jump $ra (return to caller)
	



main:	addi $sp, $sp, -4	# allocate stack space
	sw $ra, 0($sp)		# push $ra

	la $a0, string
	lbu $a1, chr_l
	jal strchr
	move $a0, $v0
	li $v0, 4
	syscall			# print int
	la $a0, nl
	li $v0, 4
	syscall			# print string

	la $a0, string
	lbu $a1, chr_h
	jal strchr
	move $a0, $v0
	li $v0, 4
	syscall			# print int
	la $a0, nl
	li $v0, 4
	syscall			# print string

	la $a0, string
	lbu $a1, chr_o
	jal strchr
	move $a0, $v0
	li $v0, 4
	syscall			# print int
	la $a0, nl
	li $v0, 4
	syscall			# print string

	la $a0, string
	lbu $a1, chr_x
	jal strchr
	move $a0, $v0
	li $v0, 4
	syscall			# print int
	la $a0, nl
	li $v0, 4
	syscall			# print string

	lw $ra, 0($sp)		# pop $ra
	addi $sp, $sp, 4	# deallocate stack space
	jr $ra			# jump $ra (exit)
