【发布时间】:2019-03-24 06:23:29
【问题描述】:
这是我在 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 个逗号。这没有发生。
可能是什么问题?
【问题讨论】:
-
# copy spc to $a0不,那条评论是错误的。la设置$a0= 标签的地址。它不会从任何地方复制spc;它必须从立即数据中实现寄存器中的静态地址。 (比如lui/ori)。