Programación General > ASM (Ensamblador)
Lectura De Un Numero
Enko:
Ya pude solucionar lo de la consola.
Las duda que tengo son:
¿Cual de estas dos formas es mejor usar en FASM?
trabajan con distintos includes, eso ya me di cuenta, y el último tarda mas en compilar. Las dos ejecutables ocupan lo mismo.
Este es el codigo que hice al principio
--- Código: Text --- format PE Consoleentry startinclude 'include\win32a.inc' section '.data' data readable writeable;datos comunes Saludo db 'Hola Mundo!',0 char db ? num dd ? inHandle dd ? outHandle dd ? ;section '.bss' readable writeable ;section '.code' code readable executablesection '.text' code readable executablestart: invoke AllocConsole invoke GetStdHandle, STD_OUTPUT_HANDLE mov [outHandle], eax invoke GetStdHandle, STD_INPUT_HANDLE mov [inHandle], eax invoke WriteConsole, [outHandle], Saludo, 11, edx, 0 invoke ReadConsole,[inHandle],char,1,num,0 invoke ExitProcess, 0 section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL' import kernel32,\ AllocConsole, 'AllocConsole',\ ExitProcess, 'ExitProcess',\ WriteConsole, 'WriteConsoleA',\ ReadConsole, 'ReadConsoleA',\ GetStdHandle, 'GetStdHandle'
este es el otro...
--- Código: Text --- format PE Consoleinclude 'include\win32ax.inc'.data caracter DB ? escritos DD ? leidos DD ? outHandle DD ? inHandle DD ? string1 DB "Hello World!" .code start: invoke AllocConsole invoke GetStdHandle,STD_OUTPUT_HANDLE mov [outHandle],eax invoke GetStdHandle,STD_INPUT_HANDLE mov [inHandle],eax invoke WriteConsole,[outHandle],string1,12,escritos,0 invoke ReadConsole,[inHandle],caracter,1,leidos,0 invoke ExitProcess,0.end start Lo que me extraña es que en el ultimo, cuando traté de importar las rutinas del kernel32, me tiraba error diciendo que ya esaban importadas.
Eternal Idol:
Para Windows siempre uso MASM32 pero ahi tenes la respuesta:
http://flatassembler.net/docs.php?article=win32
Enko:
--- Cita de: "Eternal Idol" --- Para Windows siempre uso MASM32 pero ahi tenes la respuesta:
http://flatassembler.net/docs.php?article=win32
--- Fin de la cita ---
gracias, ahora estoy leyendo el articulo.
Por sierto, si bien las ejecutables ocupan lo mismo, pero tienen algo de 20 bytes distintos.
Segun me doy cuenta MASM32 está mejor documentado y hay mas ejemplo y muchos trabajan con él.... ¿no me será mejor cambiar a masm32?
Eternal Idol:
--- Cita de: "Enko" ---gracias, ahora estoy leyendo el articulo.
Por sierto, si bien las ejecutables ocupan lo mismo, pero tienen algo de 20 bytes distintos.
Segun me doy cuenta MASM32 está mejor documentado y hay mas ejemplo y muchos trabajan con él.... ¿no me será mejor cambiar a masm32?
--- Fin de la cita ---
No tengo idea y no da como para preocuparse :devil: Si te interesa saberlo podes abrir los ejecutables con cualquier depurador (WinDbg, OllyDbg, SoftICE) o desensamblador (IDA) y ver la diferencia que tienen realmente.
Que yo sepa para Windows MASM32 es lo mas usado por lejos, no creo que tengas problemas con FASM pero proba los dos si queres.
PD. Es cierto.
Enko:
tan solo para completar, lo mismo en masm32
--- Código: Text --- .486 .model flat, stdcall option casemap :none ; case sensitive include \masm32\include\windows.inc include \masm32\include\user32.inc includelib \masm32\lib\user32.lib include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib .data caracter DB ? escritos DD ? leidos DD ? outHandle DD ? inHandle DD ? string1 DB "Hello World!" .codestart: invoke AllocConsole invoke GetStdHandle,STD_OUTPUT_HANDLE mov outHandle,eax invoke GetStdHandle,STD_INPUT_HANDLE mov inHandle,eax invoke WriteConsole,outHandle, offset string1, 12, offset descritos, 0 invoke ReadConsole,inHandle, offset caracter, 1, offset leidos, 0 invoke Sleep, 1000 invoke ExitProcess,0 end start es mas o menos lo mismo, salgo la diferencia del "offset variable", en vez de "[variable]"
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa