|
[x]
Posted via EE Mobile
|
||
Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again. |
||
| Question |
|
[x]
Attachment Details
|
||
|
[x]
The Solution Rating System
|
||
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: |
# Author: Summer Armitage
# Date: September 12, 2009
#
# A MIPS program that will convert an integer into a hexadecimal number.
# Students must add the missing lines of code.
.data
Prompt:
.asciiz "Enter an integer: "
Output1:
.asciiz "The decimal number "
Output2:
.asciiz " is 0x"
Output3:
.asciiz " in hexadecimal."
.text
# Get input from user. First, issue a prompt using the
# system call that will print out a string of characters.
la $a0, Prompt # Put the address of the string in $a0
li $v0, 4
syscall
# Next, make the system call that will wait for the user to input
# an integer.
li $v0, 5 # Code for input integer
syscall
# Integer input comes back in $v0
# Save the inputted integer in a saved register - important!
# It cannot stay in $v0 as we need to reuse $v0.
move $s0, $v0
# Next, begin to output the result message. This is done in several
# steps, including outputting strings and the original integer.
# Output first string.
la $a0, Output1
li $v0, 4
syscall
# Output original integer
move $a0, $s0 # Remember, $s0 contains the input number.
li $v0, 1
syscall
# Output second string.
la $a0, Output2
li $v0, 4
syscall
# Output the hexadecimal number. (This is done by isolating four bits
# at a time, adding them to the appropriate ASCII codes, and outputting
# the character. It is important that the digits are output in
# most-to-least significant bit order.
li $s1, 32 # Set up a loop counter
Loop:
rol $s0, $s0, 4 # Roll the bits left by four bits - wraps highest bits to lowest bits (where we need them!)
and $t0, $s0, 4 # Mask off low bits (logical AND with 000...01111)
slti $t1, $t0, 10 # Determine if the bits represent a number less than 10 (slti)***
beq $t1, $zero, MakeHighDigit # If not (if greater than 9), go make a high digit****
MakeLowDigit:
add $t0, $t0, 48 # Combine it with ASCII code for '0', becomes 0..9
move $a0, $t0 # Go output the digit
MakeHighDigit:
#sub $t2, $t0, 10 # Subtract 10 from low bits****
#add $t0, $t2, 65 # Add them to the code for 'A' (65), becomes a..f***
DigitOut:
move $a0, $t0 # Output the ASCII character
li $v0, 11
syscall
subi $s1, $s1, 1 # Decrement loop counter
bne $s1, $zero, Loop # Keep looping if loop counter is not zero
# Output third string.
la $a0, Output3
li $v0, 4
syscall
# Done, exit the program
li $v0, 10 # This system call will terminate the program gracefully.
syscall
|
Advertisement
| Hall of Fame |