这是我的代码,我只是想打印出 2D 数组,但我不断收到一堆错误或无限循环,导致我的 IDE 崩溃。这个可以编译,但我收到运行时错误:获取地址未在字边界上对齐。我知道我可能还很遥远,而且解决方案很简单。汇编真的让我很困惑我可以在java中做二维数组真的很容易我不确定我哪里出错了请帮忙
.data
array: .word 1, 2, 3, 4, 5, 6
.word 7, 8, 9, 10, 11, 12
.word 13, 14, 15, 16, 17, 18
.word 19, 20, 21, 22, 23, 24
.word 25, 26, 27, 28, 29, 30
.word 31, 32, 33, 34, 35, 36
rows: .word 6
cols: .word 6
newline: .asciiz "\n"
tab: .asciiz "\t"
.text
main:
la $t0, array
lw $t1, rows
lw $t2, cols
li $t3, 0
row_loop:
li $t4, 0
col_loop:
mul $t5, $t3, $t2
add $t6, $t5, $t4
add $t6, $t6, $t0
lw $a0, 0($t6)
li $v0, 1
syscall
li $v0, 4
la $a0, tab
syscall
addi $t4, $t4, 1
blt $t4, $t2, col_loop
li $v0, 4
la $a0, newline
syscall
addi $t3, $t3, 1
blt $t3, $t1, row_loop
li $v0, 10
syscall
我尝试过不同类型的循环,例如 while,但这通常会导致无限结果,我不在乎解决方案是 while 还是迭代循环。我只想打印 6x6 的二维数组
矩阵的每一项占用 1 个字(4 个字节)。
因此,在内部循环中,您必须将索引增加 4 而不是 1,并将
cols
变量初始化为 24 (6 * 4):
... your code ...
cols: .word 24 # instead of 6
... more code ...
addi $t4, $t4, 4 # instead of 1
blt $t4, $t2, col_loop
... your code continues ...