Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Implement single precision floating point addition in MIPS assembly language. Pr

ID: 3531856 • Letter: I

Question

Implement single precision floating point addition in MIPS assembly language. Prompt user to input two floating point (decimal) numbers and compute and display the sum. Use algorithm depicted in figure 3.15, pg 252 in the textbook.

Your program should be able to handle negative numbers as well.

You MUST NOT use the MIPS floating point instructions.

Example:

Enter a floating-point value: 1

Enter a floating-point value: 1

Sum: 2.000000000000000000

Enter a floating-point value: 2.2

Enter a floating-point value: 1.4

Sum: 3.599999904632568400

Enter a floating-point value: -1.34

Enter a floating-point value: 3.4

Sum: 2.059999942779541000

Enter a floating-point value: 10.5

Enter a floating-point value: 100.2

Sum: 110.69999694824219000

Explanation / Answer

#Initialize variables

add $s0,$t0,$zero #first integer value

add $s1,$t1,$zero #second integer value

add $s2,$zero,$zero #initialize sum variable to 0

add $t3,$zero,$zero #initialize SUM OF SIGNIFICANDS value to 0


#get EXPONENT from values

sll $s5,$s0,1 #getting the exponent value

srl $s5,$s5,24 #$s5 = first value EXPONENT


sll $s6,$s1,1 #getting the exponent value

srl $s6,$s6,24 #$s6 = second value EXPONENT


#get SIGN from values

srl $s3,$s0,31 #$s3 = first value SIGN

srl $s4,$s1,31 #$s4 = second value SIGN


#get FRACTION from values

sll $s7,$s0,9

srl $s7,$s0,9 #$s7 = first value FRACTION

sll $t8,$s1,9

srl $t8,$s1,9 #$t8 = second value FRACTION


#compare the exponents of the two numbers

compareExp: ######################


beq $s5,$s6, addSig

blt $s5,$s6, shift1 #if first < second, go to shift1

blt $s6,$s5, shift2 #if second < first, go to shift2

j compareExp


shift1: #shift the smaller number to the right

srl $s7,$s7,1 #shift to the right 1

addi $s5,$s5,1

j compareExp


shift2: #shift the smaller number to the right

#srl $s0,$s0,1 #shift to the right 1

#j compareExp

srl $t8,$t8,1 #shift to the right 1

addi $s6,$s6,1

j compareExp


addSig:


add $t3,$s7,$t8 #Add the SIGNIFICANDS


li $v0, 4

la $a0, sum

syscall


li $v0, 1

move $a0, $t3

syscall


j result


result:

li $v0, 4

la $a0, newline

syscall


sll $t4,$s3,31 #SIGN

#FRACTION

sll $t5,$s6,23 #EXPONENT

add $t6,$t4,$t5

add $t6,$t6,$t3


li $v0, 4

la $a0, sum2

syscall


li $v0, 1

move $a0, $t6

syscall


li $v0, 4

la $a0, newline

syscall


li $v0, 4

la $a0, sum2

syscall


li $v0,2

mtc1 $t6,$f12

syscall

jr $31

# END OF PROGRAM