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

I need help writing this program. The requirements are below: Implement half pre

ID: 3534615 • Letter: I

Question

I need help writing this program. The requirements are below:

Implement half 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. In half precision format, 16 bits are used to represent a floating point number. The exponent field is 5 bits wide while the significand field has 10 bits. You will need to convert single precision floating point number to half-precision floating point number and then perform your calculations. Your program should be able to handle negative numbers as well. Also, if user enters an out of range number for half precision format, your program must raise an exception message. You MUST NOT use the MIPS floating point instructions. As always, after one set of inputs, program must ask if the user wants to enter more numbers.

I need help writing this program. The requirements are below:

Implement half 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. In half precision format, 16 bits are used to represent a floating point number. The exponent field is 5 bits wide while the significand field has 10 bits. You will need to convert single precision floating point number to half-precision floating point number and then perform your calculations. Your program should be able to handle negative numbers as well. Also, if user enters an out of range number for half precision format, your program must raise an exception message. You MUST NOT use the MIPS floating point instructions. As always, after one set of inputs, program must ask if the user wants to enter more numbers.

Explanation / Answer

#Integer implementation of floating-point addition

#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