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

时间:2015-02-16 09:17:19

标签: assembly mips spim

我必须用汇编语言编写一个程序,用于在内存中存储从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)出错。

任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

你没有任何代码可以突破你的循环,所以你只会继续写字节,最终会导致错误的地址异常。

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

另一个问题是您以错误的顺序编写了sb的操作数。您希望将$t0存储在$s0,因此它应为sb $t0,0($s0)。每次增加$s0时,您还需要增加$t0

(另外,你应该通过调用系统调用10结束你的程序。)