N_ROWS = 6 N_COLS = 12 .text main: li $t0, 0 # int row = 0; loop_row_cond: bge $t0, N_ROWS, loop_row_end # if (row >= N_ROWS) {goto loop_row_end;} loop_row_body: li $t1, 0 # int col = 0; loop_col_cond: bge $t1, N_COLS, loop_col_end # if (col >= N_COLS) {goto loop_col_end;} loop_col_body: mul $t2, $t0, N_COLS # tmp = row*N_COLS add $t2, $t2, $t1 # tmp = row*N_COLS + col la $t3, flag add $t2, $t2, $t3 # tmp = address of flag + tmp li $v0, 11 lb $a0, ($t2) # printf("%c", flag[row][col]); syscall addi $t1, 1 # col++; b loop_col_cond # goto loop_col_cond; loop_col_end: li $v0, 11 la $a0, '\n' # printf("\n"); syscall addi $t0, 1 # row++; b loop_row_cond loop_row_end: li $v0, 0 # return 0; jr $ra .data flag: .byte '#', '#', '#', '#', '#', '.', '.', '#', '#', '#', '#', '#' # char flag[N_ROWS][N_COLS] ={} .byte '#', '#', '#', '#', '#', '.', '.', '#', '#', '#', '#', '#' .byte '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.' .byte '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.' .byte '#', '#', '#', '#', '#', '.', '.', '#', '#', '#', '#', '#' .byte '#', '#', '#', '#', '#', '.', '.', '#', '#', '#', '#', '#'