MIPS - 如何在内存中存储前 256 个数字

MIPS - How to store the first 256 numbers in memory

我必须用汇编语言编写一个程序,将 0 到 255 之间的前 256 个整数存储在内存中。

这是我写的代码(我是汇编语言的初学者):

.data

memory: .space 256


.text

       li $t0, 0
       la $s0, memory
       sb $s0, 0($t0)

loop: 
       add $t0, $t0, 1
       sb $s0, 0($t0)
       j loop

我尝试 运行 使用 SPIM 的程序但不起作用:SPIM 说指令 sb $s0, 0($t0).

有错误

谁能帮我解决这个问题?

您没有任何代码可以跳出循环,因此您将永远继续写入字节,这最终会导致错误地址异常。

您需要在循环中添加一些指令来检查您是否已写入 256 个字节,如果是,不会跳回到 loop:

另一个问题是您以错误的顺序编写了 sb 的操作数。您要将 $t0 存储在 $s0,因此它应该是 sb $t0,0($s0)。而且每次递增 $t0.

时还需要递增 $s0

(此外,您应该通过调用系统调用 10 来结束您的程序)。