Assembly MIPS程序工作不正常
在运行第一个sw之后和之前出现的错误是好的。在错误寄存器之前的末尾,$a0包含1,$a1包含9,这是我应该返回到main的数字;但是,当我尝试使用sw将结果返回到main时,它总是会给我边界外错误,如果在添加$a0、$a0、$a2寄存器$a0后有帮助,我无法想出如何解决它,寄存器$a1包含0000000 9和$v0,返回寄存器包含0000000 2,现在$v0应该在数组的第一个位置返回1,在数组的第二个位置返回9。任何帮助都是非常感激的 更新:为了将来参考,我通过在每个语句中添加以下4行来解决这个问题Assembly MIPS程序工作不正常,assembly,mips,mars-simulator,Assembly,Mips,Mars Simulator,在运行第一个sw之后和之前出现的错误是好的。在错误寄存器之前的末尾,$a0包含1,$a1包含9,这是我应该返回到main的数字;但是,当我尝试使用sw将结果返回到main时,它总是会给我边界外错误,如果在添加$a0、$a0、$a2寄存器$a0后有帮助,我无法想出如何解决它,寄存器$a1包含0000000 9和$v0,返回寄存器包含0000000 2,现在$v0应该在数组的第一个位置返回1,在数组的第二个位置返回9。任何帮助都是非常感激的 更新:为了将来参考,我通过在每个语句中添加以下4行来解决这
add $a0,$a0,$a2
move $s0,$a0
sw $v0,0($s0)
move $s0,$a1
sw $v0,4($s0)
您能否提供一个函数调用/数据初始化示例,以便我只需将您的代码复制粘贴到MARS MIPS并逐步执行它?我发布了完整的程序问题是,
$s0
在执行sw$v0,0($s0)
时保持值2
。这是无效的,因为sw
需要字对齐的地址(0、4、8,…),而2
没有字对齐。也许你可以解释一下,在代码中,你希望,$s0
在这一点上是什么。$a0等于1,$a1等于9,我需要将这些值返回到main,这样它就可以打印出来。在圆1的底端,结果应该是红色粒子1 9 1和绿色粒子7 9-1-1。我想我完成了,谢谢你的帮助
add $a0,$a0,$a2
move $s0,$a0
sw $v0,0($s0)
move $s0,$a1
sw $v0,4($s0)
lw $v0,0($sp) # load base array address
add $v0,$v0,4
lw $v1,0($v0)
move $v1,$a1
sw $v1,0($v0)