我必须用汇编语言编写一个程序,用于在内存中存储从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)
出错。
任何人都可以帮我这个吗?
答案 0 :(得分:1)
你没有任何代码可以突破你的循环,所以你只会继续写字节,最终会导致错误的地址异常。
您需要在循环中添加一些指令,检查您是否写入了256个字节,如果是,不会跳回loop:
。
另一个问题是您以错误的顺序编写了sb
的操作数。您希望将$t0
存储在$s0
,因此它应为sb $t0,0($s0)
。每次增加$s0
时,您还需要增加$t0
。
(另外,你应该通过调用系统调用10结束你的程序。)