我正在实现一个汇编例程,该例程从用户输入获取绝对路径(/ home / user / file),并使用该路径打开文件并读取其内容。
我尝试了以下3个例程:
.data
buffer: .space 128
openfileErrorWarning: .asciiz "Error"
.text
read_filepath:
li $v0, 8 # Syscall for input string
la $a0, buffer # Buffer size 128 bytes
li $a1, 600 # Max character 600
syscall
move $v0, $a0 # Moves the string in $a0 to the result register $v0
openfile:
move $a0,$v0 # Moves the string in $v0 to the argument register $a0
li $v0,13 # Syscall code for openfile
li $a1,0 # Syscall options
li $a2,0 # Syscall options
syscall
beq $v0,-1,openfileError # If $v0 is -1 the open file process failed
move $s0,$v0 # Moves the syscall output to $s0
j readfile # Not yet ...
openfileError:
li $v0,4 # Syscall for print
la $a0,openfileErrorWarning # printing the error declared in .data
syscall
我能够完美地获取用户输入的文件路径,但是当我尝试在$ v0中打开它时出现-1,则打开过程失败(即使将绝对路径作为参数传递)。
我不知道有什么字符串格式吗?我是否需要在字符串的末尾带有\ n或其他内容才能将其作为文件打开?如何将其添加到用户字符串?