Computer Organization and Structure


Homework #2

Due: 2007/10/30


1.      What binary number does this hexadecimal number represent: 7fff fffahex? What hexadecimal number does this binary number represent: 1100 1010 1111 1110 1111 1010 1100 1110two? What decimal number do they represent, respectively?


2.      Add comments to the following MIPS code and describe in one sentence what it computes. Assume that $a0 and $a1 are used for the input and both initially contain the integers a and b, respectively. Assume that $v0 is used for the output.


add   $t0, $zero, $zero

loop:    beq   $a1, $zero, finish

         add   $t0, $t0, $a0

         addi  $a1, $a1, -1

         j     loop

finish:  addi  $t0, $t0, 100

         add   $v0, $t0, $zero


3.      The following code fragment processes two arrays and produces an important value in register $v0. Assume that each array consists of 2500 words indexed 0 through 2499, that the base addresses of the arrays are stored in $a0 and $a1 respectively, and their sizes (2500) are stored in $a2 and $a3, respectively. Add comments to the code and describe in one sentence what this code does. Specifically, what will be returned in $v0?


sll   $a2, $a2, 2

sll   $a3, $a3, 2

add   $v0, $zero, $zero

add   $t0, $zero, $zero

outer:   add   $t4, $a0, $t0

         lw    $t4, 0($t4)

         add   $t1, $zero, $zero

inner:   add   $t3, $a1, $t1

         lw    $t3, 0($t3)

         bne   $t3, $t4, skip

         addi  $v0, $v0, 1

skip:    addi  $t1, $t1, 4

         bne   $t1, $a3, inner

         addi  $t0, $t0, 4

         bne   $t0, $a2, outer


4.      Find the shortest sequence of MIPS instructions to determine if there is a carry out from the addition of two registers, say registers $t3 and $t4. Place a 0 or 1 in register $t2 if the carry out is 0 or 1, respectively. (Hint: It can be done in two instructions.)