944,133 Members | Top Members by Rank

Ad:
  • Assembly Discussion Thread
  • Unsolved
  • Views: 14933
  • Assembly RSS
Mar 21st, 2007
0

Converting Decimal Value to Binary (MIPS)

Expand Post »
Hi,

I have a simple code written in MIPS assembly that reads an integer from a user and displays it to the screen. The code is as follows:

Assembly Syntax (Toggle Plain Text)
  1.  
  2. main:
  3. la $a0, in_msg
  4. li $v0, 4
  5. syscall
  6.  
  7. li $v0, 5
  8. syscall
  9. move $t0, $v0
  10.  
  11. la $a0, out_msg
  12. li $v0, 4
  13. syscall
  14.  
  15. move $a0, $t0
  16. li $v0, 1
  17. syscall
  18.  
  19. li $v0, 10
  20. syscall
  21.  
  22. .data
  23. in_msg: .asciiz "Input: "
  24. out_msg: .asciiz "\nOutput:\n-------\n"

How can I convert this decimal value to a binary?

Thank you in advance.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
bastek is offline Offline
1 posts
since Mar 2007
Feb 20th, 2008
0

Re: Converting Decimal Value to Binary (MIPS)

I am currently trying to work on this. If anyone can help...it would be greatly appreciated.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
RustyBEW is offline Offline
3 posts
since Feb 2008
Feb 20th, 2008
0

Re: Converting Decimal Value to Binary (MIPS)

Post what you've got and what part of it is giving you trouble.
Featured Poster
Reputation Points: 1140
Solved Threads: 229
Postaholic
Duoas is offline Offline
2,039 posts
since Oct 2007
Feb 20th, 2008
0

Re: Converting Decimal Value to Binary (MIPS)

Click to Expand / Collapse  Quote originally posted by Duoas ...
Post what you've got and what part of it is giving you trouble.
I figured it out:

# Brent Wagner

.data
ask_str1: .asciiz "Enter a number PLEASE: "
result_str: .asciiz ""
.align 2

.text
.globl __start

__start:
# ask and store the first number
li $v0, 4
la $a0, ask_str1
syscall
li $v0, 5
syscall
move $a0, $v0

jal print_bin

# New Line
li $v0, 11
li $a0, 10
syscall

j __start

print_bin:

add $t0, $zero, $a0 # put our input ($a0) into $t0
add $t1, $zero, $zero # Zero out $t1
addi $t3, $zero, 1 # load 1 as a mask
sll $t3, $t3, 31 # move the mask to appropriate position
addi $t4, $zero, 32 # loop counter
loop:

and $t1, $t0, $t3 # and the input with the mask
beq $t1, $zero, print # Branch to print if its 0

add $t1, $zero, $zero # Zero out $t1
addi $t1, $zero, 1 # Put a 1 in $t1
j print


print: li $v0, 1
move $a0, $t1
syscall

srl $t3, $t3, 1
addi $t4, $t4, -1
bne $t4, $zero, loop

jr $ra
Reputation Points: 10
Solved Threads: 0
Newbie Poster
RustyBEW is offline Offline
3 posts
since Feb 2008
Feb 20th, 2008
0

Re: Converting Decimal Value to Binary (MIPS)

Click to Expand / Collapse  Quote originally posted by Duoas ...
Post what you've got and what part of it is giving you trouble.
I figured it out:

# Brent Wagner

.data
ask_str1: .asciiz "Enter a number PLEASE: "
result_str: .asciiz ""
.align 2

.text
.globl __start

__start:
# ask and store the first number
li $v0, 4
la $a0, ask_str1
syscall
li $v0, 5
syscall
move $a0, $v0

jal print_bin

# New Line
li $v0, 11
li $a0, 10
syscall

j __start

print_bin:

add $t0, $zero, $a0 # put our input ($a0) into $t0
add $t1, $zero, $zero # Zero out $t1
addi $t3, $zero, 1 # load 1 as a mask
sll $t3, $t3, 31 # move the mask to appropriate position
addi $t4, $zero, 32 # loop counter
loop:

and $t1, $t0, $t3 # and the input with the mask
beq $t1, $zero, print # Branch to print if its 0

add $t1, $zero, $zero # Zero out $t1
addi $t1, $zero, 1 # Put a 1 in $t1
j print


print: li $v0, 1
move $a0, $t1
syscall

srl $t3, $t3, 1
addi $t4, $t4, -1
bne $t4, $zero, loop

jr $ra
Reputation Points: 10
Solved Threads: 0
Newbie Poster
RustyBEW is offline Offline
3 posts
since Feb 2008
Nov 24th, 2008
0

Re: Converting Decimal Value to Binary (MIPS)

could someone briefly describe how this MIPS code works please?

i get the syscalls, and the registers and all.. but how does it actually convert the decimal into binary? I cant seem to understand the logic behind it..
Reputation Points: 10
Solved Threads: 0
Newbie Poster
ombadboy is offline Offline
3 posts
since Nov 2008

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Assembly Forum Timeline: something about resident program ?
Next Thread in Assembly Forum Timeline: Floating point in Assembly





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC