Как манипулировать подстрока из строки - PullRequest
0 голосов
/ 24 апреля 2019

Сначала я читаю весь файл и сохраняю его в массив, называемый буфером. Затем я получаю строку за строкой из буфера, затем сохраняю ее в массив с именем temp. После печати временного массива, я возвращаюсь, чтобы получить элемент из буфера, сохраняемый в temp. Я получаю сообщение об ошибке в строке 35, поэтому я думаю, что что-то пошло не так

#My D:\\source.txt file is:
#1+2+3
#4+3+4+5+6
#5+4

.data  
fin: .asciiz "D:\\source.txt"      # filename for input
buffer: .space 1024
temp: .space 100
newLine: .asciiz "\n"
.text
.globl main
main:
#open file
li $v0,13
la $a0,fin 
li $a1,0
syscall
move $s0,$v0


#read file
li $v0,14
move $a0,$s0
la $a1,buffer
la $a2,1024
syscall         
#handle
addi $t2,$0,0 #counter
addi $t3,$0,0

loop:
lb $t1,buffer($t2)     #load an element in buffer to $t1
sb $t1,temp($t3)     #save an element from $t1 to temp
add $t2,$t2,1       #counter++
add $t3,$t3,1       #counter++
addi $ra,$zero,35         #save command at line 35 to $ra
beq $t1,'\n',print      #if $t2='\n', print temp
bne $t1,'\0',loop #if $t1 != '\0', loop

#print temp
print: 
li $t3,0 #set $t3 as 0
li   $v0, 4      #print temp
la $a0, temp 
syscall 
li   $v0, 4      #print newLine
la $a0, newLine 
syscall 
jr $ra         #run command at $ra

#close file
li $v0,16
move $a0,$s0
syscall     
exit:
li $v0,10
syscall
...