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

Write MIPS code to perform addition of two unsigned numbers in registers $t1 and

ID: 2080635 • Letter: W

Question

Write MIPS code to perform addition of two unsigned numbers in registers $t1 and $t2 and then verify whether the result has overflowed the 32-bit long destination register $t3. Explain the overflow logic with comments to elaborate upon each line of MIPs code. Indicate with a diagram how the same logic can be implemented in hardware. Explain with a flow chart and architecture diagram hardware efficient division algorithm may be performed Explain why massively parallel implementation of the division algorithm not possible?

Explanation / Answer

A)

#---------------------------------------------------------------------------------------#

        .data

A:          .word       # Store the number 4 as an integer in var1 # $t1 is used

B:          .word       # Store the number 2 as an integer in var2 # $t2 is used

S:          .word       # Store the sum of A and B          # $t3 is used

Prompt1:    .asciiz "Please enter first number: "

Prompt2:    .asciiz "Please enter second number: "

Result:     .asciiz "The sum of A and B is: "

        .text

main:

    #--------------------------------------------------------#

    #Display first prompt

    li $v0, 4      # Load instruction "print string"

    la $a0, Prompt1    # Load prompt into $a0

    syscall

    #Read first integer

    li $v0, 5      # Read 1st integer

    la $t1, A      # $t1 = A

    syscall

    #Store first integer into memory

    move    $t1, $v0    # Move contents in $v0 to $t1

    sw $t1, A      # A = value at $t1

    #--------------------------------------------------------#

    #Display second prompt

    li $v0, 4      # Load instruction "print string"

    la $a0, Prompt2    # Load prompt into $a0

    syscall

    #Read second integer

    li $v0, 5      # Read 1st integer

    la $t2, B      # $t1 = A

    syscall

    #Store second integer into memory

    move    $t2, $v0    # Move contents in $v0 to $t2

    sw $t2, B      # A = value at $t1

    #--------------------------------------------------------#

    #Add the two variables

    la $t3, S      # $t3 = S  

    add     $t3, $t1, $t2 # $t3 = $t1 + $t2

    sw $t3, S      # S = value at $t3

    #Display the Result prompt

    la $a0, Result # Loads Output label to be printed

    li $v0, 4      # Sysycall to print string

    syscall

    #Display the sum

    lw $a0, S      # $a0 = value at S

    li $v0, 1      # Syscall to print integer

    syscall

#Exit the program

Here unsigned numbers are there so overflow will not take place in $t3 register.

C)

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote