.text main: li $v0, 4 # print string la $a0, msg # printf("Enter row, col and value: "); syscall # scanf("%d %d %d", &row, &col, &value); li $v0, 5 # read int syscall move $t0, $v0 # $t0 = row li $v0, 5 # read int syscall move $t1, $v0 # $t1 = col li $v0, 5 # read int syscall move $t2, $v0 # $t2 = value mul $t3, $t0, 5 # tmp = row*N_COLS add $t3, $t3, $t1 # tmp = row*N_COLS + col mul $t3, $t3, 4 # tmp = (row*N_COLS + col)*sizeof(int) la $t4, numbers add $t3, $t3, $t4 # address + offset sw $t2, ($t3) # numbers[row][col] = value; li $t5, 0 # int i = 0; loop_row_cond: bge $t5, 3, loop_row_end # if (i >= 3) { goto loop_row_end;} loop_row_body: li $t6, 0 # int j = 0; loop_col_cond: bge $t6, 5, loop_col_end # if (j >= 5) { goto loop_col_end;} loop_col_body: mul $t7, $t5, 5 # tmp = i*N_COLS add $t7, $t7, $t6 # tmp = i*N_COLS + j mul $t7, $t7, 4 # tmp = (i*N_COLS + j)*sizeof(int) #la $t8, numbers #add $t7, $t7, $t8 # address + offset li $v0, 1 lw $a0, numbers($t7) # printf("%d", numbers[i][j]); syscall li $v0, 11 la $a0, ' ' # printf("%c", ' '); syscall addi $t6, 1 # j++; b loop_col_cond loop_col_end: li $v0, 11 la $a0, '\n' # printf("%c", '\n'); syscall addi $t5, 1 # i++; b loop_row_cond # goto loop_row_cond; loop_row_end: li $v0, 0 # return 0; jr $ra .data numbers: .word 0:5 .word 0:5 .word 0:5 # .word 0:15 msg: .asciiz "Enter row, col and value: "