In: Computer Science
#use MPLAB X IDE # Question 1 for HW 3 # Your solution should implement the following conditional statement: # if (A < 10) # D = C + 10 # else if (A == 20) # D = C - B # else # D = C + B .global main .data ### THESE VARIABLES ARE SIMPLY GIVEN VALUES TO START ### WITH--CHANGE THEIR VALUES AND VERIFY YOUR PROGRAM ### WORKS APPROPRIATELY IN ALL CASES A: .int 3 B: .int 1 C: .int 7 D: .int 0 .text .set noreorder .ent main main: # Load variables into registers lw $t0, A lw $t1, B lw $t2, C # Implement conditional statement described above # Make sure final result is in memory in variable "D" # This code simply loops infinitely spin: j spin nop .end main
The program required to have the logic in question is as below.
.global main .data ### THESE VARIABLES ARE SIMPLY GIVEN VALUES TO START ### WITH--CHANGE THEIR VALUES AND VERIFY YOUR PROGRAM ### WORKS APPROPRIATELY IN ALL CASES A: .int 3 B: .int 1 C: .int 7 D: .int 0 .text .set noreorder .ent main main: # Load variables into registers lw $t0, A lw $t1, B lw $t2, C # Implement conditional statement described above bge $t0,10,next # if a<10 execute below instruction else gonto lable next addi $t3,$t2,10 #D = C+10 j done next: bne $t0,20,else #if a=20 execute below else go to else label sub $t3,$t2,$t1 #D = C-B j done else: add $t3,$t2,$t1 # D= C+B # final result is in memory in variable "D" done: sw $t3,D #store value of D in memory nop .end main