CIS 351 |
Homework 4: Branches |
Fall 2021 |
For this Homework, you are going to write and test some assembly code using branches. You may want to watch this video first.
As with previous assignments, in order for your
solution to work with my MUnit tests, you must follow
these rules:
branches.asm..globl.a0, a1, and a2.
a0 will contain the first parameter, a1
the second, etc.
jr $ra.1 for true and 0 for false. For this assignment you may only use "real" branch and comparison instructions. In other words you may use beq,
bne, and the various slt instructions. You may not use the branch and comparison pseudoinstructions like
blt, bgt, seq, sle, sgt. If in doubt, look at your assembled code. If an
assembled branch or comparison instruction turns into multiple instructions, then you may not use it.
To be clear: This limitation only applies to branches and comparisons. You may use other pseudoinstrctions like li.
You must also write a reasonably complete set of unit tests.
This GitHub Classroom repository has a file you can use as the
starting point for your MUnit tests.
Be sure to document and comment your code!
When your code passes all tests, commit your code with [Grade Me] in the message.
!a0, do the following:not $a0, $a0andi $a0, $a0, 1andi instruction makes sure that only the least-significant bit has a value other than 0.)
If you are looking for more assembly coding practice, consider these CodingBat problems:
Updated Monday, 18 October 2021, 1:52 PM