这是我在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个逗号。那没有发生。
可能是什么问题?
答案 0 :(得分:1)
您将所有代码组装到.data
部分中;您再也不会切换回.text
。
如果您使用的是MARS,则GUI(在组装后)在反汇编中不显示asm指令。这就是为什么。
显然,MARS并没有错误地指出main
在不可执行的页面中,而是只是在启动该程序后立即决定该程序“脱离底部”。