	.data
str:
	.asciiz   "Kazabubu"

	.text
main:
	# General settings ...
	subu	$sp, $sp, 8	# make space for parameters on stack (2 words)
	sw	$ra, 0($sp)	# save register $ra on stack
	sw	$a0, 4($sp)	# save register $a0 on stack

	# Call strlen(str)
	la 	$a0, str	# load the string address' into $a0
	jal	strlen		# call strlen
	move	$s0, $v0	# save result

	# Print output
	# part I - prompt1
	li	$v0, 4
	la	$a0, prompt1
	syscall

	# part II - the string itself
	li	$v0, 4
	la	$a0, str
	syscall

	# part III - prompt2
	li	$v0, 4
	la	$a0, prompt2
	syscall

	# part IV - strlen result
	move	$a0, $s0	# print result
	li	$v0, 1
	syscall

	# part V - a "\n"
	li	$v0, 4
	la	$a0, newl
	syscall

	# General settings
	lw	$ra, 0($sp)	# Restore register $ra
	addu	$sp, $sp, 8	# Pop stack
	jr	$ra		# return

######################################################################################
# strlen($a0)

strlen:	li $v0, 0
strln0:	lb $t0, 0($a0)
	beqz $t0, strln1
	addi $v0, $v0, 1
	addi $a0, $a0, 1
	b strln0
strln1:	jr $ra

#
######################################################################################

	# Another data segment
	.data
prompt1:
	.asciiz	"length of string \""
prompt2:
	.asciiz	"\" is "
newl:
	.asciiz	"\n"

