For this assignment, we will decode three different values from a integer value received from input. The decoding is done based on the following information:
Your program is to first print out your name, netid (user id on icarus) and your CS account user id. This will help identify you for grading. Your program is to prompt the user to enter in the integer input. If a negative integer is entered, print some appropriate message and quit the program. For a non-negative integer input, print a message that clearly showing the three decoded values. When printing the ASCII character value, print out the actual character when possible. If the character is a non-printable character, print out a message stating the character is non-printable and print out the numeric value of the ASCII character. Your program is to continue prompting, reading and decoding integer values until a negative value is entered (i.e loop back to the statement where you prompt for input).
The programs will be graded based on how they execute on xspim running in the CS Department computers. You are to submit your program electronically using the the turnin command with the project name of mp1. Your program must be well commented and use blank lines to separate logical sections of your code.
Register Name | Alternative Name | Description |
---|---|---|
$0 | the value 0 | |
$1 | $at | reserved by the assembler |
$2 - $3 | $v0 - $v1 | expression evaluation and function results |
$4 - $7 | $a0 - $a3 | the first four parameters - not preserved across procedure calls |
$8 - $15 | $t0 - $t7 | temporaries - not preserved across procedure calls |
$16 - $23 | $s0 - $s7 | saved values - preserved across procedure calls |
$24 - $25 | $t8 - $t9 | temporaries - not preserved across procedure calls |
$26 - $27 | $k0 - $k | reserved for use by the operating system |
$28 | $gp | global pointer |
$29 | $sp | stack pointer |
$30 | $s8 | saved value - preserved across procedure calls |
$31 | $ra | return address |
$f0 - $f2 | floating point function results | |
$f4 - $f10 | temporaries - not preserved across procedure calls | |
$f12 - $f14 | the first two floating point parameters - not preserved across procedure calls | |
$f16 - $18 | temporaries - not preserved across procedure calls | |
$f20 - $f30 | saved values - preserved across procedure calls |
Service | System Call Code placed in $2/$v0 | Arguments | Results |
---|---|---|---|
print_int | 1 | $a0 = integer | |
print_float | 2 | $f12 = float | |
print_double | 3 | $f12 = double | |
print_string | 4 | $a0 = address of string | |
read_int | 5 | integer (in $v0) | |
read_float | 6 | float (in $f0) | |
read_double | 7 | double (in $f0) | |
read_string | 8 | $a0 = address of string buffer $a1 = length of string buffer | |
sbrk | 9 | $a0 = amount | address (in $v0) |
exit | 10 |
The following special characters are used with character strings in SPIM. The special characters follow the C language convention:
Character | Encoding Sequence |
---|---|
Newline | \n |
Tab | \t |
Double quote | \" |