HW1: Intro to MIPS and Number Representations

This assignment will help you become more comfortable coding in MIPS and using

binary and hexadecimal numbers. This is an individual assignment. You may work

with your classmates but your final answers should be your own.

Deliverables: A file named hw1.txt (or .doc or .rtf or .tex or any other file that I can

open on my computer without having to download new software).

If you haven’t yet gone through the intro MARS tutorial (link is on Moodle), do that

first!

Complete the following and record results/answers when requested in your hw1

file. Please do not copy the questions themselves, just write your answers with the

appropriate number/letters. You also do NOT need to show your work, you can find

a binary calculator with a quick google search to check your answers, as well as

check the result in MARS, so you will definitely end up with the correct value,

however it’s important to practice doing the addition by hand first, as you will

almost certainly (ok definitely) have to do some simple binary and hex math on the

1st exam.

1. Given the following 2 32-bit hexadecimal numbers

0x20b36080

0x200cc00d

a. Add the numbers by hand and record the result (also in hex).

b. Convert the hexadecimal result to binary and record the value (it’s

easiest to read if you leave a space between each set of 4 digits).

c. Write the result in decimal assuming that the original hex values are

32-bit unsigned integers.

d. Would the decimal value be different if the original hex values were

32-bit signed integers instead? If so what would the value be?

e. Use MARS to write a small program (a few lines) in assembly language

that adds these 2 numbers using the add instruction and check the

result againts the one you found when adding by hand? Make sure to

look at the result in MARS as a decimal as well as hex or binary. Copy

your program instructions here to your HW

2. Given the following 2 32-bit hexadecimal numbers

0x40b36080

0x400cc00d

Repeat steps a-d from above and record your answers.

a.

b.

c.

d.

e. Again add these 2 numbers in MARS using your program from

question 1. This time you won’t seem to get a result – scroll down if

need be to the bottom of the Mars Messages window to see what

MARS has to say about what happened. Why did MARS have a

problem?

f. Run your program again only change the add instruction to addu

instead. What result does MARS show now? What does the “u” stand

for in the addu instruction?

3. Given the following 2 32-bit hexadecimal numbers

0x90b36080

0x900cc00d

a. Add the numbers by hand and record the complete result with as

many bits as you need.

b. Add these 2 numbers using the addu instruction in MARS. What is the

result? Explain the difference in how these 2 add instructions (add vs

addu) handle overflow (when the result of a calculation is too large to

fit in the location used to store it). Why do you think the instructions

are designed this way? (this can be pure speculation, no wrong

answers as long as you try)

Sale!