MIPS assembly program is displaying scientific notation instead of the values I want

82 Views Asked by At

So the jist of this assignment is to write a program that will convert and display a Kilometer to Miles conversion table. I'm supposed to use a while loop which displays every whole number from 0 km to 20km. The loop will convert km to miles for every iteration, and it will display the results as a table.

Here is my code:

.data
    newLine: .asciiz "\n"
    milesNum: .asciiz " --> Miles: "
    kiloNum: .asciiz "Kilometers: "
    convFac: .float 1.609344

.text
    main:
            li $t0, 0 # i = 0

        while:
                # Load values from 
 memory
                l.s $f2, convFac
                mtc1 $t0, $f4

                # Calculate miles
                mul.s $f0, $f4, $f2

                # Display label for 
kilometers
                li $v0, 4
                la $a0, kiloNum
                syscall

                # Display Kilometers
                move $a0, $t0
                li $v0, 1
                syscall

                # Display label for 
miles
                li $v0, 4
                la $a0, milesNum
                syscall

                # Display miles as a 
float
                li $v0, 2
                mov.s $f12, $f0
                syscall

            # Print new line
                li $v0, 4
                la $a0, newLine
                syscall

                # Increment kilometers
                addi $t0, $t0, 1

                # Make sure we're still in loop bounds
                li $t1, 20
                bgt $t0, $t1, exit

                # Print newline
                li $v0, 4
                la $a0, newLine
                syscall

                j while

        exit:
                li $v0, 10
                syscall

        # End of program
        li $v0, 10
        syscall

Instead of giving me the correct answers (i.e: 20 * 1.609344 = 32.18688), it's displaying this:

Kilometers: 0 --> Miles: 0.0

Kilometers: 1 --> Miles: 2.8E-45

Kilometers: 2 --> Miles: 4.2E-45

Kilometers: 3 --> Miles: 7.0E-45

Kilometers: 4 --> Miles: 8.4E-45

Kilometers: 5 --> Miles: 1.1E-44

Kilometers: 6 --> Miles: 1.4E-44

Kilometers: 7 --> Miles: 1.5E-44

Kilometers: 8 --> Miles: 1.8E-44

Kilometers: 9 --> Miles: 2.0E-44

Kilometers: 10 --> Miles: 2.24E-44

Kilometers: 11 --> Miles: 2.5E-44

Kilometers: 12 --> Miles: 2.7E-44

Kilometers: 13 --> Miles: 2.9E-44

Kilometers: 14 --> Miles: 3.2E-44

Kilometers: 15 --> Miles: 3.4E-44

Kilometers: 16 --> Miles: 3.6E-44

Kilometers: 17 --> Miles: 3.8E-44

Kilometers: 18 --> Miles: 4.1E-44

Kilometers: 19 --> Miles: 4.3E-44

Kilometers: 20 --> Miles: 4.5E-44

I know it's an error with my code, but I'm stuck.

0

There are 0 best solutions below