PRoblema en fasm intentando usar consola

Iniciado por fary, 1 Agosto 2010, 20:39 PM

0 Miembros y 1 Visitante están viendo este tema.

fary

Holas.... bueno estoy intentando crear en asm una consola con las api de windows... , la genera bien y todo pero no puedo imprimir cosas en la consola y nose porque es, aqui les dejo el codigo haber si ustedes saben solucionarlo.

Código (asm) [Seleccionar]
include 'c:\archivos de programa\include\win32ax.inc'

.data

    msgerror db 'No se a encontrado la consola',0
    tituloerror db 'Error',0
    tituloconsola db 'Drinky Console in Asm',0
    linea db 'Esta es mi consola!',0
    hwnd dd ?
    escribe dd ?
    longitud dd ?
.code
start:

    invoke AllocConsole
    invoke GetStdHandle,STD_INPUT_HANDLE
    cmp eax,0
    ja correcto
    jbe incorrecto
    correcto:
        mov [hwnd],eax
        invoke SetConsoleTitle,tituloconsola
        invoke lstrlen,linea
        mov [longitud],eax
        invoke WriteConsole,hwnd,linea,longitud,[escribe],NULL   ; Esta es la linea que creo que falla


        jmp fin
    incorrecto:
        invoke MessageBoxA,0,msgerror,tituloerror,MB_ICONERROR
        jmp fin
    fin:
        ret

.end start       



salu2! y esperando respuesta.
Un byte a la izquierda.

Eternal Idol

Primero estas creando un programa que no es realmente de consola y por eso tenes que llamar a AllocConsole.

Agregando esto al principio no hace falta y tu programa tendra como subsystem en el PE console:
Código (asm) [Seleccionar]
format PE console

Segundo estas pidiendo el HANDLE para la ENTRADA, es decir el teclado, tenes que pedir la salida, el monitor:

Código (asm) [Seleccionar]
invoke GetStdHandle, STD_OUTPUT_HANDLE

Y tercero efectivamente la linea de WriteConsole esta mal, deberia ser asi:
Código (asm) [Seleccionar]
invoke WriteConsole, [hwnd], linea, [longitud], escribe, NULL
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

fary

#2
ufff, cierto, muchas gracias Eternal idol... ejeje esto de empezar en asm... XD

salu2! y gracias.

Un byte a la izquierda.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón