# Lecture de fichier, d’après Kenneth Vollmar and Pete Sanderson # .globl _start # adresse de démarrage du programme pour l’éditeur de liens _start: ############### # Ouverture de fichier en lecture la a0, influx # nom du fichier entrée li a1, 0 # ouverture (drapeau 0 lecture, 1 écriture) jal ra, open_file mv x30, a0 # x30 -> descripteur # Ouvrir un fichier en écriture la a0, exflux # nom du fichier sortie li a1, 1 # ouverture (drapeau 0 lecture, 1 écriture) jal ra, open_file mv x31, a0 # x31 -> descripteur li x29, 16 # x29 <-- nb choses à écrire li x28, 0 # x28 <-- pour boucle # Appel de la lecture du fichier loop1: mv a0, x30 # a0 -> descripteur la a1, ma_zone # a1 <-- adresse du buffer li a2, 2 # a2 <-- taille du buffer jal ra, read_line # Écriture de ce que l’on vient de lire ecrire: mv a0, x31 # a0 -> descripteur la a1, ma_zone # a1 <-- adresse du buffer jal ra, write_line jal ra, print_str for1tst: addi x28, x28, 1 bge x28, x29, exit j loop1 # Fin du programme exit: mv a0, x30 jal ra, close_file mv a0, x31 jal ra, close_file addi a0, x0, 0 # code de retour 0 addi a7, x0, 93 # le code de commande 93 ecall # Appel Linux pour finir ##### .include "strings.s" .include "read-print.s" .include "file-mgt.s" ###### .data .align 2 # Aligner ce qui suit sur une frontière de mot ma_zone: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 influx: .string "intab.txt" exflux: .string "extab.txt"