.address 0x1000 # Start of data section (adjust as needed) A: .word 2, 1, 3 .word 3, 4, 1 .word 5, 2, 3 B: .word 1, 2, 0 .word 4, 1, 2 .word 3, 2, 1 C: .space 36 # Space for 9 elements (3x3 matrix) .address 0x2000 # Start of code section (adjust as needed) main: # Load the base addresses of A, B, and C into registers la $t0, A # t0 = base of A la $t1, B # t1 = base of B la $t2, C # t2 = base of C # Calculate C[0] = A[0]*B[0] + A[1]*B[3] + A[2]*B[6] lw $t3, 0($t0) # t3 = A[0] (2) lw $t4, 0($t1) # t4 = B[0] (1) mul $t5, $t3, $t4 # t5 = A[0]*B[0] (2*1 = 2) lw $t3, 4($t0) # t3 = A[1] (1) lw $t4, 12($t1) # t4 = B[3] (4) mul $t6, $t3, $t4 # t6 = A[1]*B[3] (1*4 = 4) add $t5, $t5, $t6 # t5 = t5 + t6 (2 + 4 = 6) lw $t3, 8($t0) # t3 = A[2] (3) lw $t4, 24($t1) # t4 = B[6] (3) mul $t6, $t3, $t4 # t6 = A[2]*B[6] (3*3 = 9) add $t5, $t5, $t6 # t5 = t5 + t6 (6 + 9 = 15) sw $t5, 0($t2) # Store result C[0] = 15 # Calculate C[1] = A[0]*B[1] + A[1]*B[4] + A[2]*B[7] lw $t3, 0($t0) # t3 = A[0] (2) lw $t4, 4($t1) # t4 = B[1] (2) mul $t5, $t3, $t4 # t5 = A[0]*B[1] (2*2 = 4) lw $t3, 4($t0) # t3 = A[1] (1) lw $t4, 16($t1) # t4 = B[4] (1) mul $t6, $t3, $t4 # t6 = A[1]*B[4] (1*1 = 1) add $t5, $t5, $t6 # t5 = t5 + t6 (4 + 1 = 5) lw $t3, 8($t0) # t3 = A[2] (3) lw $t4, 28($t1) # t4 = B[7] (2) mul $t6, $t3, $t4 # t6 = A[2]*B[7] (3*2 = 6) add $t5, $t5, $t6 # t5 = t5 + t6 (5 + 6 = 11) sw $t5, 4($t2) # Store result C[1] = 11 # Calculate C[2] = A[0]*B[2] + A[1]*B[5] + A[2]*B[8] lw $t3, 0($t0) # t3 = A[0] (2) lw $t4, 8($t1) # t4 = B[2] (0) mul $t5, $t3, $t4 # t5 = A[0]*B[2] (2*0 = 0) lw $t3, 4($t0) # t3 = A[1] (1) lw $t4, 20($t1) # t4 = B[5] (2) mul $t6, $t3, $t4 # t6 = A[1]*B[5] (1*2 = 2) add $t5, $t5, $t6 # t5 = t5 + t6 (0 + 2 = 2) lw $t3, 8($t0) # t3 = A[2] (3) lw $t4, 32($t1) # t4 = B[8] (1) mul $t6, $t3, $t4 # t6 = A[2]*B[8] (3*1 = 3) add $t5, $t5, $t6 # t5 = t5 + t6 (2 + 3 = 5) sw $t5, 8($t2) # Store result C[2] = 5 # Exit program (MIPS system call for exit is 10) li $v0, 10 # Exit code for MIPS syscall syscall