Problem Set Answers: Conditionals and Loops Answers

 

    1. $t0:  3
      $t1:  10
      $t2:  3
      $t3:  2
      $t4:  6
      
    2. $t0:  -2
      $t1:  10
      $t2:  3
      $t3:  15
      $t4:  -60
      
    1. $t0:  5
      $t1:  2
      $t2:  1
      $t3:  9
      $t4:  3
      $t5:  7
      $t6:  28
      
    2. $t0:  3
      $t1:  8
      $t2:  2
      $t3:  10
      $t4:  3
      $t5:  8
      $t6:  32
      
  1. $t0:  16
    $t1:  15
    $t2:  56
    
  2. $t0:  4
    $t1:  3
    $t2:  2
    $t3:  1
    $t4:  82
    $t5:  27
    $s0:  9
    $s1:  18
    
  3.       beq     $t1, $t2, else
          ble     $t2, $t5, else
            .
            . (1)
            .
          b       endif
    else:
            .
            . (2)
            .
    endif:
            .
            . (3)
            .
            .
            
  4.       ble   $t1, $t2, if
          bgt   $t3, $t4, if
          .
          . (2)
          .
          b     endif
    if:
          .
          . (1)
          .
    endif:
          .
          . (3)
          .
    
    
  5.       add   $t5,$t2,$t3
          ble   $t1,$t5,else
          .
          . (1)
          .
          b     after
    else:
          add   $t5,$t3,$t1
          bne   $t5,$t4,outelse
          .
          . (2)
          .
          b     after
    outelse:
          .
          . (3)
          .
          b     after
    after:
          .
          . (4)
          .
    
  6. bgt $t1,$t2,outelse . . (1) . beqz $t3,inelse . . (2) . b endif inelse: . . (3) . b endif outelse: . . (4) . endif: . . (5) .
  7.       blt     $t1, $t2, else2
          bge     $t0, $t3, else1
            .
            . (1)
            .
          b       endin1
    else1:
            .
            . (2)
            .
    endin1:
            .
            . (3)
            .
          b       endout
    else2:
          li      $t4, 10
          beq     $t0, $t4, endout
            .
            . (4)
            .
    endout:
            .
            . (5)
            .
            
  8.       addi    $t3, $t2, 1
          bgt     $t1, $t3, else1
            .
            . (1)
            .
          b       endout
    else1:
          ble     $t1, $t2, checkor
          b       then
    checkor:
          bnez    $t1, else2
    then:
            .
            . (2)
            .
          b       endin
    else2:
            .
            . (3)
            .
    endin:
            .
            . (4)
            .
    endout:
            .
            . (5)
            .
        
  9.       li      $t3, 10                # t3 = 10
    while:
          beqz    $t1, endwhile          # if t1 == 0 exit loop
          add     $t2, $t2, $t3          # t2 = t2 + t3
          addi    $t1, $t1, -1           # t1--
          b       while                  # back to loop
    endwhile:
        
  10.       move     $t3, $0               # t3 = 0
          move     $t1,$0                # t1 = 0
    forloop:
          bge      $t1, $t2, endfor      # if t1 >= t2 exit loop
          li       $v0, 4
          la       $a0, prompt           # print prompt
          syscall
          li       $v0, 5                # read num
          syscall
          mult     $v0, $v0              # num * num
          mflo     $t2                   # t2 = num * num
          li       $v0, 1
          move     $a0, $t2              # print t2
          syscall
          addi     $t1, $t1, 1           # t1++
          b        forloop               # back to loop
    endfor:
        
  11.       move     $t3, $0               # t3 = 0
          move     $t2, $0               # t2 = 0
          move     $t1, $0               # t1 = 0
          li       $t4,100               # t4 = 100
    forloop:
          bge      $t1, $t4, endfor      # if t1 >= t4 exit loop
          li       $v0, 4
          la       $a0, prompt           # print prompt
          syscall
          li       $v0, 5                # read num
          syscall
          andi     $t5, $v0, 0x0001      # get last bit of num
          beqz     $t5, even             # if last bit is zero, num is even
          add      $t3, $t3, $v0         # if not, add 1 to odds
          b        increment
    even:
          add      $t2, $t2, $v0         # add 1 to evens
    increment:
          addi     $t1, $t1, 1           # t1++
          b        forloop               # back to loop
    endfor:
          li       $v0, 4
          la       $a0, evenmsg          # print even msg
          syscall
          li       $v0, 1
          move     $a0, $t2              # print count of evens
          syscall
          li       $v0, 4
          la       $a0, oddmsg           # print odd msg
          syscall
          li       $v0, 1
          move     $a0, $t3              # print count of odds
          syscall
        
  12.       li $t0, 1         # $t0 is x^n = 1
          li       $v0, 4
          la       $a0, nummsg           # print num prompt
          syscall
          li       $v0, 5                # read x
          syscall
    outer:
          beqz     $v0, done             # if x == 0 exit loop
          move     $t1, $v0              # $t1 is x
          li       $v0, 4
          la       $a0, expmsg           # print exponent prompt
          syscall
          li       $v0, 5                # read n
          syscall
          move     $t2, $v0              # $t2 is n
    inner:
          beqz     $t2, innerend         # count down from n to 0 in inner loop
          mult     $t0, $t1              # x^n = x^n * x
          mflo     $t0
          addi     $t2, $t2, -1          # n--
          b        inner                 # back to top of loop for x^n
    innerend:
          li       $v0, 4
          la       $a0, xtonoutmsg       # print "xton = "
          syscall
          li       $v0, 1
          move     $a0, $t0              # print x^n
          syscall
          li       $t0, 1                # x^n = 1
          li       $v0, 4
          la       $a0, nummsg           # print num prompt
          syscall
          li       $v0, 5                # read x
          syscall
          b        outer                 # back to loop for x
    done:
    

Email Me | Office Hours | My Home Page | Department Home | MCC Home Page

© Copyright Emmi Schatz 2020