MIPS汇编一个简单的for循环(二)

MIPS assembly a simple for loop (2)

这是我在 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

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

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

显然,MARS 并没有因为 main 位于不可执行页面而出错,而是在您启动该程序后立即 "dropped off the bottom" 简单地决定它。