Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops 简单for循环的MIPS组件(2)_Loops_Assembly_Mips - Fatal编程技术网

Loops 简单for循环的MIPS组件(2)

Loops 简单for循环的MIPS组件(2),loops,assembly,mips,Loops,Assembly,Mips,这是我第一次努力学习MIPS中的循环 .data spc: .asciiz ", " .globl main main: li $t0, 0 loop: bgt $t0, 14, exit # branch if($t0 > 14) addi $t0, $t0, 1 # $t0++ for loop increment # print a comma la $a0, spc # copy spc to $a0 for

这是我第一次努力学习MIPS中的循环

.data
    spc: .asciiz ", "

.globl main

main:
    li $t0, 0

loop:
    bgt     $t0, 14, exit # branch if($t0 > 14) 
    addi    $t0, $t0, 1 # $t0++ for loop increment

    # print a comma
    la  $a0, spc # copy spc to $a0 for printing
    li  $v0, 4 # syscall value for strings
    syscall

    # repeat loop
    j   loop

exit:
    li  $v0, 10 # syscall value for program termination
    syscall
输出:

 -- program is finished running (dropped off bottom) --
该程序应在I/O控制台中打印15个逗号。这并没有发生

可能是什么问题


Ref:

您将所有代码组装到
.data
部分;您从未切换回
.text

如果您使用的是MARS,GUI在反汇编(组装后)中不显示asm指令。这就是为什么


显然,MARS没有在
main
的不可执行页面上出错,而是在您启动程序后立即决定该程序“从底部掉下来”。

链接页面中显示的另一个程序如何?@user366312:如何?在
main:
之前添加
.text
可以使代码正常工作;我看不出这个问题还有什么需要回答的地方。此程序没有
.text
@user366312:是的,有。它从不切换到
.data
段,所以它都在
.text
段中。@JörgWMittag,哦,明白了。
#将spc复制到$a0
不,该注释是错误的
la
设置
$a0
=标签的地址。它不会从任何地方复制
spc
;它必须从即时数据中具体化寄存器中的静态地址。(如
lui
/
ori
)。