试图打印用户特定数量的星星,但控制台打印无限

时间:2017-12-04 20:50:06

标签: assembly mips subroutine spim

不确定我哪里出错了,在我的程序中我提示用户输入他们想要绘制的线数以创建一个带星星的简单三角形,但是当我输入数字时,无论数字是多少,立即进入无限循环,我必须关闭程序。我似乎无法想象它被困在哪里。这是我的代码。谢谢!

    # $a1 holds how many lines
    # $a2 is the counter


    .text
    .globl main
main:

li $v0, 4
la $a0, size1
syscall

li $v0, 5
syscall

move $a1, $v0

ori $a2, $a2, 0

jal starline
nop

li $v0, 10
syscall

    .data
size1: .asciiz " How many lines do you want ? "
star: .asciiz "* "
newline: .asciiz " \n "


    .text
    .globl starline
starline:

loop:
beq $a1, $a2, endsub
nop

li $v0, 4
la $a0, star
syscall

li $v0, 4
la $a0, newline
syscall

addu $a2, $a2, 1

j loop
nop


endsub:
jr $ra
nop

例如,如果用户键入2,则输出应该如下所示

*

**

编辑:当我重新阅读我输入的内容时,我知道为什么它只打印一行一行,但我仍然坚持为什么它是一个无限循环。

0 个答案:

没有答案