This video tutorial demonstrates basic file operations in a programming context. The speaker explains how to create, open, read, write to, and close files using system calls, illustrating the process with code examples and explanations.
Bienvenidos en este vídeo tutorial vamos a ver las operaciones básicas para trabajar con archivos: abrir un archivo, leer o escribir desde y hacia el archivo y finalmente cerrar el archivo. El programa que vamos a realizar utilizará el monitor y el teclado para interactuar con el usuario, como ya es costumbre. Colocaremos primero la descripción del programa: nombre del archivo archivo.s, descripción: programa para mostrar las funciones básicas para el manejo de archivos. Teniendo nuestra descripción del archivo, empezaremos con la sección de datos. .data, ciudad. Vamos a crear las variables a utilizar, donde crearemos variables para mostrar mensajes al usuario. Para ello necesitaremos una variable para capturar el error si por alguna razón no se logrará crear el archivo, y le pondremos que_error: .asciz “\n Error: %s\n”. Nuestro mensaje error: .asciz “Archivo creado correctamente.”, y una variable para que el usuario ingrese una cadena de texto y le vamos a poner cadena_msg: .asciz “\nIngrese una cadena de texto:\n”. La cadena que queremos que vea el usuario: ingrese una cadena de texto. Y vamos a crear otra variable para el nombre del archivo que vamos a crear nuevo archivo: .asciz “prueba.txt”, y el nombre del archivo a crear prueba.txt. Otra variable para el texto que le diremos al usuario y le vamos a reservar un espacio de memoria de 100 bytes y le vamos a llamar texto: .space 100. Ya teniendo nuestras variables a utilizar, escribimos el código principal de nuestro programa. .text, .global _start. Ya que vamos a utilizar algunas funciones, guardaremos en la pila el registro de enlace, ya que como programadores debemos de garantizar que el programa se ejecuta correctamente cuando estas terminen. Buzz. La primera acción con archivos que vamos a implementar es la de crear o abrir un archivo. Para esto utilizaremos la función del sistema con código 5, y vamos a poner el código de la función en el registro r7, como lo hacemos con wood: mov r7, #5. Luego creamos los parámetros: el primero es el puntero al archivo ld r0, =nuevo_archivo, y creamos el r1 para contener las banderas del modo en que se abrirá el archivo. Los modos del archivo serán solo de lectura, de escritura o ambas, y va a llamar 0 va a ser igual solo lectura, uno va a ser igual escritura y dos va a ser igual la lectura y escritura. En hexadecimal 0x40 se utiliza para crear el archivo si no existe y para tener todas las funciones sumamos y obtenemos 0x42, es decir que lo abrimos para lectura y escritura y si no existe se creará el archivo. Entonces colocamos mov r1, #0x42 para crear el archivo para lectura y escritura. En r2 tenemos que poner los permisos según el sistema de archivos. Esto se divide en tres grupos: permiso para el dueño del archivo, para el grupo al que pertenece el dueño y para otros usuarios, y cada uno incluye tres clases: leer, escribir y ejecutar. Utilizaremos el 666 que en octal es 110, que indica lectura activa, escritura activa y ejecutar el archivo desactivado, y estos mismos permisos serán para el dueño, grupos y otros usuarios, por lo que el código resultante es 0666. Como lo hacemos con mov r2, #0666, qué significa dar permiso al sistema: 6 va a ser igual a lecturas y escrituras y ejecutable. No teniendo nuestro archivo y nuestros permisos, tenemos que ejecutar la llamada a la función svc. Al ejecutar la función de abrir retorna entre 0, un número que es el descriptor del archivo y por medio de ese número nos referiremos al archivo más adelante, por lo cual vamos a almacenar ese número en el registro r4. mov r4, r0, donde guardaremos el puntero al archivo. Si sucede algún error al abrir el archivo, la función de web menos uno, por lo que cmp r0, #-1. Es decir, si ocurrió algún error r0 va a ser igual a menos 1. Ahora sólo tenemos que solicitarle al usuario que ingrese un texto para luego guardarlo en el archivo. Pidamos una cadena de texto: ld r0, =cadena_msg, bl printf. Como lo vamos a hacer: leeremos desde el teclado usando ciscar 3 para capturar desde el teclado, syscall 3 leer, que sería igual mov r7, #3. Leemos desde él desde el teclado: mov r0, #0. Cargamos el puntero a la variable donde se guardará el r, mov r1, =texto. Movemos la cantidad máxima de carácter a leer mov r2, #100, y ejecutamos la función del sistema svc. La segunda acción que haremos sobre el archivo es escribir el texto ingresado por el usuario, donde usaremos el número descriptor del archivo que guardamos anteriormente. Escribimos en el archivo la carne ingresada por el usuario: mov r7, #4. Movemos el descriptor del archivo mov r0, r4. Cargamos la dirección de la cadena de texto ld r1, =texto. Como vemos la cantidad máxima de carácter a escribir mov r2, #100, si ejecutamos svc. La tercera acción será cerrar el archivo y lo haremos con la función del sistema con códigos y cerramos el archivo con mov r7, #6, y ejecutamos svc. Restauramos el valor del registro de enlace en el contador del programa. Escribimos el código para terminar el programa: exit, que se siente mov r7, #1, svc. Y la sección para mostrar el mensaje de rossi no se logró el archivo, y error. El mensaje, princ. Ahora guardamos con control y nos salimos con control x. Compilamos, menos, archivo archivo punto. Ya vimos, 18. La tierra, control para agua, control x. Ejecutamos, ejecutamos nosotros vamos a ejecutar nuestro programa. Ahora si nos da error o no, y compiló correctamente. Ejecutamos nuestro archivo. Nos manda ingrese una cadena de texto, aquí tenemos que poner una cadena de prueba, vamos a poner bienvenidos a la clase, depuración, 5. Presionamos enter y podemos verificar el contenido del archivo con el comando cat, y como le pusimos a nuestro archivo crear, le pusimos prueba.txt. Y ahí tenemos ya el mensaje se escribió en nuestro archivo, es decir no tenemos ningún problema. Si queremos nosotros de contar y escribir otro mensaje lo podemos hacer. Les contamos de nuevo, nos dice ingrese una calle de texto es nada, segunda. Presionamos el té como el disco en el archivo que vemos. Lo que contiene nuestro archivo en este caso tenemos, esta es la segunda prueba. Sí nosotros, si nosotros que enviamos queremos verificar contenido con camps, entonces nuestro archivo se crea y guarda la calle text de texto ingresada por el seno correctamente. Esto ha sido todo, hasta la próxima.