Answer:
.data
prompt: .asciiz "Enter 4 integers for A, B, C, D respectively:\n"
newLine: .asciiz "\n"
decimal: .asciiz "f_ten = "
binary: .asciiz "f_two = "
decimal2: .asciiz "g_ten = "
binary2: .asciiz "g_two = "
.text
main:
#display prompt
li $v0, 4
la $a0, prompt
syscall
#Read A input in $v0 and store it in $t0
li $v0, 5
syscall
move $t0, $v0
#Read B input in $v0 and store it in $t1
li $v0, 5
syscall
move $t1, $v0
#Read C input in $v0 and store it in $t2
li $v0, 5
syscall
move $t2, $v0
#Read D input in $v0 and store it in $t3
li $v0, 5
syscall
move $t3, $v0
#Finding A^4
#Loop (AxA)
li $t6, 0
L1:
bge $t6, $t0, quit
add $s1, $s1, $t0 # A=S+A => $s1= A^2
addi $t6, $t6, 1 # i=i+1
j L1
quit:
#Loop (A^2 x A^2)
li $t6, 0
L1A:
bge $t6, $s1, quit1A
add $s5, $s5, $s1
addi $t6,$t6, 1
j L1A
#End of Finding A^4
#Finding 4xA^3
quit1A:
#Loop (4xB)
li $t6, 0
L2:
bge $t6, 4, quit2
add $s2, $s2, $t1
addi $t6, $t6, 1
j L2
quit2:
#Loop (BxB)
li $t6 , 0
L2A:
bge $t6, $t1, quit2A #loop2
add $s6, $s6, $t1 #add
addi $t6, $t6, 1 #add immediate
j L2A #loop2
quit2A: # perform proper program termination using syscall for exit
#Loop (BxB)
li $t6 , 0 #load immediate
L2AA:
bge $t6, $s2, quit2AA #loop2
add $t7, $t7, $s6 #add
addi $t6, $t6, 1 #add immediate
j L2AA #loop2
#End ofFinding 4xA^3
#Finding 3xC^2
quit2AA: # perform proper program termination using syscall for exit
#3 Loop (3 x (C x C)) FOR S3
li $t6 , 0 #load immediate
L3:
bge $t6, $t2, quit3 #loop3
add $s3, $s3, $t2 #add
addi $t6,$t6, 1 #add immediate
j L3 #loop3
quit3: # perform proper program termination using syscall for exit
#3 Loop (3 x (C x C)) FOR S3
li $t6 , 0 #load immediate
L3A:
bge $t6, 3, quit3A #loop3
add $s0, $s0, $s3 #add
addi $t6,$t6, 1 #add immediate
j L3A #loop3
#End of Finding 3xC^2
#Finding 2xD
quit3A: # perform proper program termination using syscall for exit
#4 Loop (2 x D) FOR S4
li $t6 , 0
L4:
bge $t6, 2, quit4 #loop4
add $s4, $s4, $t3 #add
addi $t6, $t6, 1 #add immediate
j L4 #Loop4
#End of Finding 2xD
#Finding AxB^2
quit4:
li $t6, 0
li $s1, 0
L5:
bge $t6, $t1, quit5
add $s1, $s1, $t1
addi $t6, $t6, 1
j L5
quit5:
li $t6, 0
li $s2, 0
L6:
bge $t6, $t0, quit6
add $s2, $s2, $s1
addi $t6, $t6, 1
j L6
#End of Finding AxB^2
#Finding C^2XD^3
quit6: #finds C^2
li $t6, 0
li $s1, 0
L7:
bge $t6, $t2, quit7
add $s1, $s1, $t2
addi $t6, $t6, 1
j L7
quit7: #finds D^2
li $t6, 0
li $s6, 0
L8:
bge $t6, $t3, quit8
add $s6, $s6, $t3
addi $t6, $t6, 1
j L8
quit8: #finds D^3
li $t6, 0
li $s7, 0
L9:
bge $t6, $t3, quit9
add $s7, $s7, $s6
addi $t6, $t6, 1
j L9
quit9: #finds C^2XD^3
li $t6, 0
li $s3, 0
L10:
bge $t6, $s1, end
add $s3, $s3, $s7
addi $t6, $t6, 1
j L10
#End of Finding C^2XD^3
end: # perform proper program termination using syscall for exit
#f is $t8
li $t8 , 0
sub $t8, $s5, $t7 # addition
add $t8, $t8, $s0 # subract
sub $t8,$t8, $s4 # subract
#g is $t9
li $t9 , 0
add $t9, $s2, $s3 # addition
#Display
#1st equation
li $v0,4 # display the answer string with syscall having $v0=4
la $a0, decimal # Gives answer in decimal value
syscall # value entered is returned in register $v0
li $v0, 1 # display the answer string with syscall having $v0=1
move $a0, $t8 # moves the value from $a0 into $t8
syscall # value entered is returned in register $v0
li $v0,4 # display the answer string with syscall having $v0=4
la $a0, newLine # puts newLine in between answers
syscall # value entered is returned in register $v0
li $v0,4 # display the answer string with syscall having $v0=4
la $a0, binary # Gives answer in binary
syscall # value entered is returned in register $v0
li $v0, 35
move $a0, $t8 # moves the value from into $a0 from $t8
syscall # value entered is returned in register $v0
li $v0,4 # display the answer string with syscall having $v0=4
la $a0, newLine # puts newLine in between answers
syscall # value entered is returned in register $v0
#2nd equation
li $v0,4 # display the answer string with syscall having $v0=4
la $a0, decimal2 # Gives answer in decimal value
syscall # value entered is returned in register $v0
li $v0, 1 # display the answer string with syscall having $v0=1
move $a0, $t9 # moves the value from $a0 into $t8
syscall # value entered is returned in reg $v0
li $v0,4 # display the answer string with syscall having $v0=4
la $a0, newLine # puts newLine in between answers
syscall # value entered is returned in register $v0
li $v0,4 # display the answer string with syscall having $v0=4
la $a0, binary2 # Gives answer in binary
syscall # value entered is returned in register $v0
li $v0, 35
move $a0, $t9 # moves the value from into $a0 from $t8
syscall # value entered is returned in register $v0
li $v0,4 # display the answer string with syscall having $v0=4
la $a0, newLine # puts newLine in between answers
syscall # value entered is returned in register $v0
#end the program
li $v0, 10
syscall