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 ; } }