Computer Architecture

1) c = (a + b) /a

d = b*(a + b) / a * c

e = a* (c + d)

Write the assembly to do the following statements for each of the following architectures. Use the least number of instructions. Reuse register when you can. Do not use addressing modes. Use Load r1, a or add a,b,c

(0,2) GPR

(0,3) GPR

(1,2) GPR

(3,3) GPR

2) We have data stored in memory location 0x3aa, 0x3bb and 0x3cc. How do we perform the following operation multiply 0x3aa by 0x3bb and store into 0x3cc

a) (3,3) GPU only using register indirect

b) (3,3) GPU only using memory indirect (will need to have additional memory locations)

3) Write out how to solve the following code using any addressing mode for (0,3) GPR. Write comments besides each line of code. Similar to how it was done in class.

Short a[50];

Int y,z;

for( x=0; x<20; x++)

{

y = a[x + 3];

z = y + a[x%10];

}

4) How would you write good for A[x][y+5]? Use indirect addressing with index register.

5) Using only the register direct addressing modes write how to do the following CISC instruction