MIPS组装一个简单的for循环(2)

时间:2019-03-24 06:23:29

标签: 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 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个逗号。那没有发生。

可能是什么问题?

参考:MIPS assembly for a simple for loop

1 个答案:

答案 0 :(得分:1)

您将所有代码组装到.data部分中;您再也不会切换回.text

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

显然,MARS并没有错误地指出main在不可执行的页面中,而是只是在启动该程序后立即决定该程序“脱离底部”。