如何在没有硬编码$ t0
的值的情况下循环到文件末尾BubbleSort
因为当我使用$ a2时它不起作用,但它在这里说http://courses.missouristate.edu/kenvollmar/mars/help/syscallhelp.html
这 从文件中读取
li $ v0,14
$ a0 =文件描述符
$ a1 =输入缓冲区的地址
$ a2 =要读取的最大字符数$ v0包含字符数
当我用它作为硬编码的替代品时($ addi $ t0,$ t0,1000) $ a2仍为0
addi $t0, $t0,1000
loop: beq $t0, $0, loopend
#this code reads in a character from the file
jal readchar
#print the character to the console
li $v0,11
move $a0,$t1
syscall
addi $t0,$t0,-1
j loop
loopend:
readchar: li $v0,14
move $a0,$s6
la $a1,inchar
li $a2,1
syscall
lb $t1,inchar
jr $ra
谢谢!
答案 0 :(得分:1)
我不确定在系统调用之前将$a2
移动到$t0
的目的是什么。 $a2
是系统调用的参数,您可以在其中指定要读取的最大字符数。返回值 - 即实际读取的字符数 - 仅在系统调用后可用,并且将在寄存器$v0
中。
因此,如果在系统调用之前将{1}放入$a2
并且系统调用后$v0
包含零,那么您可能已到达文件的末尾。