**Computer Organization and Structure**

Homework
#2

Due:
2007/10/30

1. What
binary number does this hexadecimal number represent: 7fff fffa_{hex}? What
hexadecimal number does this binary number represent: 1100 1010 1111 1110 1111
1010 1100 1110_{two}? 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.)