Question: My code does not output the g function correctly and caculates a different value, please help fix this issue and will thumbs up. my code:
My code does not output the g function correctly and caculates a different value, please help fix this issue and will thumbs up.

my code:
.data
prompt: .asciiz " Enter 4 integers for A, B, C, D respectively: " space: .asciiz " " 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 #Loop (AxA) li $t6, 0 L1: bge $t6, $t0, quit add $s1, $s1, $t0 # A=S+A addi $t6, $t6, 1 # i=i+1 j L1 quit: #Loop (AxA) li $t6, 0 L1A: bge $t6, $s1, quit1A add $s5, $s5, $s1 addi $t6,$t6, 1 j L1A 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 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 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 quit4: # perform proper program termination using syscall for exit
#5 Loop (A x (B x B)) FOR S li $t6 , 0 #load immediate li $s1 , 0 L5: bge $t6, $t0, quit5 #loop add $s1, $s6, $t0 #add addi $t6,$t6, 1 #add immediate j L5 #loop1 quit5: # perform proper program termination using syscall for exit
#6 Loop (D x D) FOR S4 li $t6 , 0 L6: bge $t6, $t3, quit6 #loop4 add $s6, $s6, $t3 #add addi $t6, $t6, 1 #add immediate j L6 #Loop4 quit6: # perform proper program termination using syscall for exit
#6 Loop (D) FOR S4 li $t6 , 0 L6A: bge $t6, $t3, quit6A #loop4 add $s6, $s6, $t3 #add addi $t6, $t6, 1 #add immediate j L6A #Loop4 quit6A: # 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 add $t9, $s1, $s2 #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, space # puts space 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, space # puts space 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, space # puts space 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, space # puts space in between answers syscall # value entered is returned in register $v0
You are tasked to calculate a specific algebraic expansion, i.e. compute the value of f and g for the expression without using any intrinsic multiplication instructions, subroutines, and function calls. More formally, write MIPS assembly code that accepts four positive integers A, B, C, and D as input parameters. The code shall execute in MARS to prompt the user to enter four positive integers represented in decimal, each separated by the Enter key. The program shall calculate (A-4B3+3c2-2D) and g (AB +caD) using your own self-written multiplication routine. The program will then output f and g in decimal and binary, using syscall routines for each output. Note: To receive credit, no multiplication, no division, and no shift instructions shall be used. Namely, none of{mul, mul.d, mul.s, mulo, mulou, mult, multu, mulu, div, divu, rem, sll, sl1v, sra, srav, srl, srlv? or else a zero score will result. Thus, it is necessary to compose your own multiplication technique. In addition, use of a loop is required for credit to realize the multiplication code. Use of Macro, Subroutines, or Functions results in a zero grade Hint: MARS supports output in binary format using the appropriate parameters with syscall. For the C- language prototype, there are many approaches to print a value in binary in C. Here is my favorite single- line-in-a-loop solution that you can use with any C-compiler to print x in binary, shown with x=9 as an example main () int i,x=9; for (i=31 ; i>-0 ;i--) / put char with ASCII code for either 0 or 1 by adding 1 for the ith bit to ASCII of 0' / putchar ('0' + ( (x>>?) & 1)); return (0); You can use the above in your C-code prototype or write your own binary output routine in C if you want. Sample output for Part A is Enter 4 integers for A, B,C,D respectively: 9 21 3 f ten 49026 f two -00000000000000001011111110000010 gten 13122 g two00000000000000000011001101000010 You are tasked to calculate a specific algebraic expansion, i.e. compute the value of f and g for the expression without using any intrinsic multiplication instructions, subroutines, and function calls. More formally, write MIPS assembly code that accepts four positive integers A, B, C, and D as input parameters. The code shall execute in MARS to prompt the user to enter four positive integers represented in decimal, each separated by the Enter key. The program shall calculate (A-4B3+3c2-2D) and g (AB +caD) using your own self-written multiplication routine. The program will then output f and g in decimal and binary, using syscall routines for each output. Note: To receive credit, no multiplication, no division, and no shift instructions shall be used. Namely, none of{mul, mul.d, mul.s, mulo, mulou, mult, multu, mulu, div, divu, rem, sll, sl1v, sra, srav, srl, srlv? or else a zero score will result. Thus, it is necessary to compose your own multiplication technique. In addition, use of a loop is required for credit to realize the multiplication code. Use of Macro, Subroutines, or Functions results in a zero grade Hint: MARS supports output in binary format using the appropriate parameters with syscall. For the C- language prototype, there are many approaches to print a value in binary in C. Here is my favorite single- line-in-a-loop solution that you can use with any C-compiler to print x in binary, shown with x=9 as an example main () int i,x=9; for (i=31 ; i>-0 ;i--) / put char with ASCII code for either 0 or 1 by adding 1 for the ith bit to ASCII of 0' / putchar ('0' + ( (x>>?) & 1)); return (0); You can use the above in your C-code prototype or write your own binary output routine in C if you want. Sample output for Part A is Enter 4 integers for A, B,C,D respectively: 9 21 3 f ten 49026 f two -00000000000000001011111110000010 gten 13122 g two00000000000000000011001101000010
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
