Estoy en linux, usando nasm y estoy haciendo este código.
section .data:
fichero: db 'programa'; Nombre que tendra el programa
section .bss:
texto: resb 16000
section .text:
global _start
_start:
mov eax,5 ; sys_open()
pop ebx
pop ebx ; El nombre de este programa
pop ebx; Primer argumento
mov ecx,0 ; Para leer
int 80h
; Ya está en eax
mov ebx,eax; Ya no(bueno , aun si)
mov eax,3 ; sys_read
mov ecx,texto
mov edx,16000
int 80h;
;El contenido del fichero este está en texto.
;Ahora voy a abrir otro fichero
mov eax,4
mov ebx,1
mov ecx,texto
mov edx,16000
int 80h
mov eax,1
mov ebx,0
int 80h
Cuando lo ejecuto (le he dado todos los permisos necesarios y eso) no hace nada.
Creo que lo he hecho bien, alguien sabe cuál es el problema?
Gracias
\
Hola braulio , lo que pasa *((eso creo yo tal ves este equivocado)) es que tienes que abrir la consola y entonces ejecutar el programa , si lo ensamblaste y no da error entonces debe de hacer algo , trata de abrir la consola y arrastrale el ejecutable .elf .
Saludos
Depuralo con gdb.
Lo hice desde la consola pasándole un argumento de un fichero.
Ahora lo depuro .
¿Pero que se supone que debería buscar? El código lo tengo ahí mismo y en asm , para que el debugger?
Para ver el comportamiento, que resultado devuelve cada interrupcion ... si esta escribiendo en el buffer que esta escribiendo, etc.
He compilado con la opción -g para que genere información de depuración pero cuando uso el gdb me dice .
Symbols not Found
Asi que creo que no puedo poner ningún bp.
Ya tenes el codigo en assembly y es bastante corto, no necesitas los simbolos, pone un int 3 al principio y listo.