我不确定如何解决这个问题,但我需要编写一个函数,该函数接收一个地址,用于数组的开头,文件名的地址以及要读取的字节的最大数量。我甚至不确定我的代码是否有效,但这就是我所拥有的,我只是不认为这是将值读入数组形式。如果有人能够澄清系统调用14究竟是什么,我会很感激。
fill_the_array:
la $t0, 0($a0) #base address of the array in memory
la $t1, 0($a1) #address of the filename in memory
move $t2, $a2 # maximum number of bytes to read from the file into memory
#open file
li $v0, 13 #syscall for opening the file
la $a0, 0($t1) #address of file name
li $a1, 0 #read in data
li $a2, 0 #mode is ignored
syscall #open the file descriptor
move $s0, $v0 # file descriptor
move $a0, $s0 # file descriptor
move $a1, $t0 #address into input buffer (the address for the array???)
move $a2, $t2 # maximum number of bytes
li $v0, 14
syscall
#close the file
li $v0, 16
move $a0, $s0
syscall
jr $ra
答案 0 :(得分:1)
如果有人可以澄清系统调用14究竟是什么,我会很感激。
Name Number Arguments Returns
--------------------------------------------------------------------------------------------------------------------------------------
read from file 14 $a0 = file descriptor $v0 contains number of characters read (0 if end-of-file, negative if error).
$a1 = address of input buffer
$a2 = maximum number of characters to read
因此它从文件中读取多个字节(最多$a2
个字节),并将它们存储在内存中,从$a1
中给出的地址开始。然后在$v0
中返回实际读取的字节数。
如果您需要检查代码是否有效,请在MARS或SPIM等模拟器中运行。他们都有记忆观众。它们还允许您单步执行代码并设置断点,以防您的代码无法按预期工作,并且您需要找出出错的地方。