Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly MIPS程序工作不正常_Assembly_Mips_Mars Simulator - Fatal编程技术网

Assembly MIPS程序工作不正常

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行来解决这

在运行第一个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)