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:

``````main:
la         \$a0, in_msg
li         \$v0, 4
syscall

li         \$v0, 5
syscall
move       \$t0, \$v0

la         \$a0, out_msg
li         \$v0, 4
syscall

move       \$a0, \$t0
li         \$v0, 1
syscall

li         \$v0, 10
syscall

.data
in_msg:    .asciiz "Input: "
out_msg:   .asciiz "\nOutput:\n-------\n"``````

How can I convert this decimal value to a binary?

All 5 Replies

I am currently trying to work on this. If anyone can help...it would be greatly appreciated.

Post what you've got and what part of it is giving you trouble.

Post what you've got and what part of it is giving you trouble.

I figured it out:

# Brent Wagner

.data
result_str: .asciiz ""
.align 2

.text
.globl __start

__start:
# ask and store the first number
li \$v0, 4
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
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
bne \$t4, \$zero, loop

jr \$ra

Post what you've got and what part of it is giving you trouble.

I figured it out:

# Brent Wagner

.data
result_str: .asciiz ""
.align 2

.text
.globl __start

__start:
# ask and store the first number
li \$v0, 4
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
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