我最近开始使用MIPS并尝试做一些简单的事情。目前,这个程序会毫不拖延地打印出Hello World,我希望它以1秒的延迟打印出Hello World。
.global myprog
.text
.set noreorder
.ent myprog
myprog:
loop:
la $a0,Serial
la $a1,hello
jal _ZN5Print7printlnEPKc
nop
jal mydelay
nop
j loop
nop
mydelay:
li $a2, 1000
addi $a2, $a2, -1
bgez mydelay
jr $ra
.end myprog
.data
hello: .ascii "Hello, world!\0"
基本上是通过这个,它会第一次打印第一个Hello World,当它到达那个位置时会转到“mydelay”,其中mydelay将循环1000次(这应该提供一些延迟,不完全确定这部分),然后它应该返回到标签循环,但目前所做的只是打印Hello World而没有延迟。
答案 0 :(得分:1)
这似乎是一种非常糟糕的方法来调用可靠的延迟。始终寻找syscall
以查看是否有适合您的事情。
如果你正在使用MARS,这将延迟1000毫秒:
li $v0, 32
li $a0, 1000
syscall
答案 1 :(得分:0)
$a2
,因此如果退出条件正常,则循环应该是无限的。blez
?