.text .globl __start __start: li $v0, 4 # mesg1 asking for a number la $a0, msg1 syscall li $v0,5 # system call that reads an integer syscall move $a0, $v0 jal countbits move $t2, $v0 exit: li $v0, 4 # print mesg2 la $a0, msg2 syscall li $v0,1 # print countbits move $a0, $t2 syscall li $v0,4 # print an end of line la $a0, cr syscall li $v0,10 # exit syscall countbits: addi $v0, $zero, 0 beq $a0, $zero, done bge $a0, $zero, rec addi $v0, $v0, 1 rec: addi $sp, $sp, -8 sw $ra, 4($sp) sw $v0, ($sp) sll $a0, $a0, 1 jal countbits lw $ra, 4($sp) lw $s0, ($sp) addi $sp, $sp, 8 add $v0, $v0, $s0 done: jr $ra .data msg1: .asciiz "Enter a integer number: " msg2: .asciiz "Number of 1's in the number = " cr: .asciiz "\n"