Я ищу программу, которая читает файл, затем в сохраненном буфере меняет определенный символ для другого во всех их появлениях и затем записывает копию этого измененного буфера в другой файл, программа, кажется, работает хорошо, ноэто не пишет то, что нужно, это то, что я сделал:
.data
file: .asciiz "test.txt"
fout: .asciiz "result.txt"
buffer: .space 128
bsize: .word 127
msg: .asciiz "The program has been written properly"
char_to: .asciiz "n"
char_re: .asciiz "p"
#Macro for open a file for reading
.macro open_file_r()
li $v0, 13
la $a0 file
li $a1 0
li $a2 0
syscall
move $s0, $v0
.end_macro
.macro read_file()
li $v0, 14 #Llamada al sistema para leer archivo
move $a0, $s0
la $a1, buffer
lw $a2, bsize #Longitud del buffer
syscall
.end_macro
#Open a file for writing
.macro open_file_w()
li $v0, 13
la $a0 fout
li $a1 1
li $a2 0
syscall
move $s6, $v0
.end_macro
.macro write_file()
li $v0, 15 # system call for write to file
move $a0, $s6 # file descriptor
la $a1, ($t0) # address of buffer from which to write
li $a2, 127 # hardcoded buffer length
syscall # write to file
.end_macro
.macro close_file()
li $v0, 16
move $a0, $s0
syscall
.end_macro
.macro close_file_W()
li $v0, 16
move $a0, $s6
syscall
.end_macro
.macro exit()
li $v0 10
syscall
.end_macro
.text
main:
open_file_r()
read_file()
la $t0 buffer
la $t1, char_to
la $t2, char_re
addi $s1, $t1, 0
addi $s2, $t2, 0
loop:
lbu $t3, 0($t0)
addi $t0, $t0, 1
beq $t3 $s1 replace
beq $t3 $zero end
bne $t3 $s1 loop
replace:
sb $s2 -1($t0)
b loop
end:
close_file()
open_file_w()
write_file()
close_file_W()
exit()
И вывод в файле (который он предупрежден как поврежденный):
\00 \ 00 \ 00Программа написана правильно. \ 00n \ 00p \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00
Итак, кто-нибудь может помочь мне увидеть, что не так в коде?