# Fall 2013 CSCI 255 Homework 9 (revision of homework 8)

This assignment is due 10:00 AM on 9 November at the HW9 moodle page.

However, if you submit it before Tuesday, 5 November, 10:00 AM, I will give it a preliminary grading before Exam 2 on Wednesday.

## The goal and the numbers

The goal of this assignment is to give you a chance to redo most of Homework 8. Getting this to work in Moodle’s grading system can a little challenging, so let’s say that your raw Homework 8 grade is rawHW8 and your raw Homework 9 grade is rawHW9. The values of rawHW8 will range from 0 to 40 and the values of rawHW8 will range from 0 to 10. Then your cooked (recorded in Moodle) Homeworks 8 and 9 will be calculated with the following Java statements.

```  cookedHW8 = Math.max(rawHW8, 3*rawHW9) ;
cookedHW9 = Math.max(rawHW9, (rawHW8+2)/4) ;
```

## The assignment

Fill in the blanks in the following form and submit it by moodle.

```Fill in the blanks using your favorite text editor. The simpler the better.

Problem HW9A -- Write the assembly code for the following C statements

1)  x = 0 ;

2)  i = 0 ;

3)  ++i ;

4)  j = V[i] ;

5)  x = x + (j & 0x3) ;

6)  j = j >> 2 ;

Problem HW9B -- translate the following C code into C where
the only C control structures that can be used are:
goto LABEL ;
if (VAR RELOP 0) goto LABEL ;
LABEL can be any label in your code.
VAR can be any variable in your code.
RELOP can be any of the C equality or relational operators: == != < <= > >=
This means no while, for, do, else, or unrestricted if.

for (i=0; i<100; ++i) {
// ...
while (j != 0) {
// ...
}
}

Problem HW9C -- Put HW9A and HW9B together to solve the original Homework 8.
That is, write PIC assembly for the following:
x = 0 ;
for (i=0; i<100; ++i) {
j = V[i] ;
while (j != 0) {
x = x + (j & 0x3) ;
j = j >> 2 ;
}
}

```