.data bit_m: .asciiz "Bit position is one: b" .text li $a0,0x80009001 # value to try move $s0,$a0 # value is return in $a0 addi $s1,$0,32 # current position loop: andi $t0,$s0,0x1 # mask off least significant bit beq $t0,$0,cont la $a0,bit_m # message address li $v0,4 # print message service syscall sub $a0,$0,$s1 # negate position addi $a0,$a0,32 # counting from right, position=32-current li $v0,1 # print integer service syscall addi $a0,$0,'\n' # newline character li $v0,11 # print character service syscall cont: srl $s0,$s0,1 # move over one position addi $s1,$s1,-1 # decrement bit count bne $s1,$0,loop li $v0,11 # halt program syscall