created 06/27/2003

# Chapter 16 Programming Exercises

> For these programming exercises, use only those instructions that have been discussed so far in these notes:

> add | lhu | sb
> addi | lui | sh
> addiu | lw | sll
> addu | mfhi | sra
> and | mflo | srl
> andi | mult | sub
> div | multu | subu
> divu | nor | sw
> lb | or | xor
> lbu | ori | xori
> lh |  |

> In the Settings menu of SPIM set Bare Machine ON, Allow Pseudo Instructions OFF, Load Trap File OFF, Delayed Branches ON, Delayed Loads ON, Mapped IO OFF, Quiet OFF.

> Run the programs by setting the value of the PC to 0x400000 and then single stepping (pushing F10) or by multiple stepping (push F11 and enter a number of steps). Observing the results in the SPIM window.

## *Exercise 1

Your program has a data section declared as follows:

          .data
          .byte   12
          .byte   97
          .byte  133
          .byte   82
          .byte  236

Write a program that adds the values up, computes the average, and stores the result in a memory location. Is the average correct?

Hint: there are two easily-made errors in this program.

Click here to go back to the main menu.

End of Exercises