我正在做一個家庭作業,我必須從文本文件中讀取由\ n分隔的非固定數量的整數,並將它們排列在鏈表(並在數組中,以比較性能)。之後,我必須將排序後的列表寫入另一個文本文件,這就是我的問題所在。我真的不知道系統調用15如何工作(寫入文件)。我不知道它將輸出到文件的輸入類型。我的意思是,我猜他們必須是字符串,而不是整數......所以我做了一個小測試程序,但它不起作用。在這裏它是:如何將int寫入MIPS文件?
.data
archivo: .asciiz "salida.txt"
.text
# reservar memoria para 3 chars + \0
li $v0, 9
li $a0, 4
syscall
move $s0, $v0
# agregar al array el numero 1 ascii
addi $t0, $zero, 49
sw $t0, 0($s0)
addi $s0, $s0, 4
# agregar al array el numero 0 ascii
addi $t0, $zero, 48
sw $t0, 0($s0)
addi $s0, $s0, 4
# agregar al array el numero 0 ascii
addi $t0, $zero, 48
sw $t0, 0($s0)
addi $s0, $s0, 4
# agregar al array \0 al final
addi $t0, $zero, 0
sw $t0, 0($s0)
addi $s0, $s0, -12
# abrir archivo en modo lectura
li $v0, 13
la $a0, archivo
li $a1, 1
li $a2, 0
move $s1, $v0
syscall
# escribir buffer $s0 en el archivo
li $v0, 15
move $a0, $s1
move $a1, $s0
addi $a2, $zero, 4
syscall
# cerrar archivo
li $v0, 16
move $a0, $s1
syscall
# finalizar ejecucion
li $v0, 17
syscall
我試圖爲3個字符+ \ 0炭分配足夠的存儲器,以數字100寫入文件「salida.txt」。所以,我將ascii值1,0,0存儲到一個數組(這是分配的內存),然後遞減指針,指向該內存塊的開始。之後,我以寫模式打開文件並寫入緩衝區$ s0的4個字符。 不幸的是,這隻會創建文件,但什麼都不寫。任何幫助,將不勝感激。謝謝。
我也試着寫的。數據聲明的變量,就像這樣:
.data
hola: .asciiz "hola"
.text
la $s3, hola
...
# do syscall 15 with move $a1, $s3
但是這也不能工作。