attempted code below: f_ten, f_two producing desired output but g_ten and g_two
ID: 3791113 • Letter: A
Question
attempted code below: f_ten, f_two producing desired output but g_ten and g_two are not
please help using MIPS assembly
.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
Explanation / Answer
.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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.