## String count program. Count includes the 'newline' character # from string entered at prompt .data msg1: .asciiz "Enter a string: \n " msg2: .asciiz "# of bytes: \n " buff: .space 64 .text ## entry point of program must be called 'main' main: addiu $v0, $0, 4 # syscall 4 (print_str) # prompt user la $a0 msg1 syscall addiu $v0, $0, 4 #get string from user la $a0 buff addiu $a1 $0 64 addiu $v0 $0 8 #syscall 8 (read str) syscall jal strlen # $a0 has address of string # echo string move $s0, $v0 # save integer count la $a0, msg2 addiu $v0 $0 4 syscall add $a0, $0, $s0 # print integer addiu $v0, $0, 1 syscall #exit addiu $v0 $0 10 syscall # syscall 10 (exit) ## address passed in $a0 strlen: addu $v0, $0, $0 # zero out count loop: lb $t0, 0($a0) beq $t0,$0, strlen_exit addiu $a0, $a0, 1 # increment to next byte addiu $v0, $v0, 1 # increment count beq $0,$0, loop strlen_exit: jr $ra #return