Estou tendo alguns problemas na hora de escrever no arquivo, então resolvi testar algumas coisas no criacaoEscrita.asm que está na página do EP ( http://www.ime.usp.br/~kon/MAC211/montagem/criacaoEscrita.asm ) e vi que está dando o mesmo problema.
O que eu fiz foi :
- trocar o "Hello, world!" por "Olá, mundo!", executar;
- o programa cria um teste.txt, com a frase "Olá, mundo!";
- trocar o "Olá, mundo!" do arquivo .asm por "Olá!", executar;
- o programa coloca no arquivo teste.txt o seguinte :
"Olá!
mundo!"
Então não consigo usar sempre o mesmo arquivo de saída ...
Outra coisa, é que eu não tenho conseguido encontrar um EOF padrão. Que valor devo usar para comparar ? Quando criei alguns testes pelo gedit, fui ver o que aparece na hora que acaba o arquivo e está o número 10, que aparentemente é newline. Agora quando fui testar um arquivo feito pelo meu programa de números aleatórios de 16 bits ele dá uma "Falha de segmentação".
Alguma sugestão ?
edit : Colocando através de uma variável char e usando o fprintf consegui colocar 10 no fim ... mas posso usar isso no meu programa ?
Eu estou com o mesmo problema, quando o arquivo de saída já tem algo escrito não consigo apagar, apenas escrever a saída e o resto do que já estava antes continua lá. Tem algum jeito de apagar esse resto ou apagar o arquivo e criar outro de mesmo nome?
- apagar arquivo, caso queiram um "zerado": utilize a syscall 10 (sys_unlink); se você utilizar apenas a sys_write, acontece exatamente o que você mostrou.
- comparação do final: de fato, faltou eu especificar um critério de parada: prefiro que vocês fiquem lendo bytes do arquivo, até que o sys_read devolva zero no eax.
- comparação do final: de fato, faltou eu especificar um critério de parada: prefiro que vocês fiquem lendo bytes do arquivo, até que o sys_read devolva zero no eax.