Bueno el codigo que me deducido es el siguiente:
Código
section .data hello db 'Hello, world!',10 ; Our dear string helloLen equ $ - hello ; Length of our dear string dataSecond db 'Datos escritos correctamente',10 dataLen equ $ - dataSecond file db '/root/archivo.txt',10 section .text global _start _start: pop ebx pop ebx pop ebx ;arg[3] o el directorio del archivo a escribir en ebx mov eax,8 ; Syscall a creat mov ecx,00644Q ; Permisos de lectura en Octal (rw_rw_rw_) int 0x80 ; Llamada al kernel de Linux ; Ahora tenemos el file descriptor o handler del archivo selecionado en ebx test eax,eax ; Igualamos si el file descriptor es correcto js skipWrite call fileWrite ; Primer procedimiento de escritura call fileWSegundo ; Segundo procedimiento de escritura skipWrite: mov ebx,eax ; Guardamos el error en ebx mov eax,1 ; Syscall 1 - Finalizar ejecucion int 0x80 ; llamamos al kernel ; proc fileWrite - write a string to a file fileWrite: mov ebx,eax ; sys_creat devuelve un handler de archivos en eax, lo ponemos en ebx mov eax,4 ; sys_write ; ebx is already set up mov ecx,hello ; La cadena de texto en ecx, como tercer argumento de la función mov edx,helloLen ; la length de nuestra cadena definida como constante con equ int 0x80 fileWSegundo: mov ebx,eax ; sys_creat devuelve un handler de archivos en eax, lo ponemos en ebx mov eax,4 ; sys_write mov ecx,dataSecond mov edx,dataLen int 0x80 mov eax,6 ; sys_close int 0x80 ret ; No se para que sirve pero lo he visto en mas programas :S ; endp fileWrite
La cosa es que no me escribe dicho archivo, he querido crear dos procedimientos para escribir por separado, por mero aprendizaje, el ver que puedo separar la runtime en varios procedimientos, no mas que eso.
Alguien me podria orientar? Y explicarme que hace el ret