Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: HelloWorldCodigo en 23 Agosto 2015, 03:17 am



Título: [Consulta] ¿Cómo imprimir un carácter en la consola de Windows (32 bits) (NASM)
Publicado por: HelloWorldCodigo en 23 Agosto 2015, 03:17 am
Hola, muy buenas a todos y a todas. La pregunta es cómo podría imprimir un carácter en la consola de Windows, trabajando en 32 bits. No querría tener que usar ni GCC (querría usar NASM puro), ni tampoco DosBox. ¡Muchas gracias!


Título: Re: [Consulta] ¿Cómo imprimir un carácter en la consola de Windows (32 bits) (NASM)
Publicado por: Eternal Idol en 23 Agosto 2015, 10:31 am
Tenes que usar los servicios del S.O. en este caso la API de Windows. Con GetStdHandle (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683231%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396) obtenes el HANDLE correspondiente (STD_OUTPUT_HANDLE para escribir en consola) y despues podes usar WriteFile (y ReadFile para leer con STD_INPUT_HANDLE).


Título: Re: [Consulta] ¿Cómo imprimir un carácter en la consola de Windows (32 bits) (NASM)
Publicado por: Shout en 23 Agosto 2015, 17:46 pm
Tenes que usar los servicios del S.O. en este caso la API de Windows. Con GetStdHandle (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683231%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396) obtenes el HANDLE correspondiente (STD_OUTPUT_HANDLE para escribir en consola) y despues podes usar WriteFile (y ReadFile para leer con STD_INPUT_HANDLE).
Y... No podría usar printf?


Título: Re: [Consulta] ¿Cómo imprimir un carácter en la consola de Windows (32 bits) (NASM)
Publicado por: Eternal Idol en 23 Agosto 2015, 20:02 pm
Y... No podría usar printf?

Aunque yo diria que con "NASM puro" se asume usar los servicios del S.O. para llamar a printf tendria que enlazar (o cargar) una RTL de C, si sabes como hacerlo con NASM (yo siempre trabajo con MASM) explicaselo a HelloWorldCodigo.


Título: Re: [Consulta] ¿Cómo imprimir un carácter en la consola de Windows (32 bits) (NASM)
Publicado por: HelloWorldCodigo en 23 Agosto 2015, 22:10 pm
Entonces, si no tengo que usar C Standard, donde están definidos GetStdHandle?


Título: Re: [Consulta] ¿Cómo imprimir un carácter en la consola de Windows (32 bits) (NASM)
Publicado por: Eternal Idol en 23 Agosto 2015, 22:22 pm
Aca (http://lmgtfy.com/?q=getstdhandle+nasm).