2014-09-20 2 views
0

Я пытаюсь создать файл с именем «exit.txt» и написать некоторые данные на нем. Я пробовал разные флаги и режимы, но это не работает. Это код, который я использую:Создайте и напишите файл на MIPS

str_exit: .asciiz "/home/LinuxPc/Desktop/exit.txt" 

file_write: 

li $v0, 13 
la $a0, str_exit 
li $a1, 1 
la $a2, 0 
syscall 

Есть ли способ заставить его работать? Спасибо!

ответ

1

Вы помещаете код, чтобы открыть файл в режиме записи, но вы ничего не записывали в файл. Здесь идет пример того, как открыть/запись/закрыть файл:

.data 
str_exit: .asciiz "test.txt" 
str_data: .asciiz "This is a test!" 
str_data_end: 

.text 

file_open: 
    li $v0, 13 
    la $a0, str_exit 
    li $a1, 1 
    li $a2, 0 
    syscall # File descriptor gets returned in $v0 
file_write: 
    move $a0, $v0 # Syscall 15 requieres file descriptor in $a0 
    li $v0, 15 
    la $a1, str_data 
    la $a2, str_data_end 
    la $a3, str_data 
    subu $a2, $a2, $a3 # computes the length of the string, this is really a constant 
    syscall 
file_close: 
    li $v0, 16 # $a0 already has the file descriptor 
    syscall 
4

В дополнение к ответу gusbro (открытый файловый поток, прежде чем писать), это может помочь установить флаги и режим для открытого файла называют следующим образом:

li $a1, 0x41    
li $a2, 0x1FF   

Это устанавливает флаг в значение 0x41 шестигранной, который говорит вызов первого создания файла. В то время как режим установлен на шестнадцатеричное значение 0x1FF, которое преобразуется в двоичное значение 0000 0000 0001 1111 1111, которое устанавливает разрешение файла для: (...) 0 111 (n) 111 (g) 111 (другие).

+0

Удивительно! Это именно то, что мне нужно. – Ahmad