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 来结束您的程序)。
我必须用汇编语言编写一个程序,将 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 来结束您的程序)。