Programación General > ASM (Ensamblador)

 Lectura De Un Numero

<< < (2/4) > >>

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&#092;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,&#092;   AllocConsole, 'AllocConsole',&#092;   ExitProcess, 'ExitProcess',&#092;   WriteConsole, 'WriteConsoleA',&#092;   ReadConsole, 'ReadConsoleA',&#092;   GetStdHandle, 'GetStdHandle'  
este es el otro...

--- Código: Text --- format PE Consoleinclude 'include&#092;win32ax.inc'.data   caracter     DB ?  escritos     DD ?  leidos       DD ?  outHandle    DD ?  inHandle     DD ?  string1    DB &#34;Hello World!&#34; .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 &#59; case sensitive    include &#092;masm32&#092;include&#092;windows.inc     include &#092;masm32&#092;include&#092;user32.inc    includelib &#092;masm32&#092;lib&#092;user32.lib        include &#092;masm32&#092;include&#092;kernel32.inc    includelib &#092;masm32&#092;lib&#092;kernel32.lib    .data         caracter     DB ?        escritos     DD ?        leidos       DD ?        outHandle    DD ?        inHandle     DD ?        string1      DB &#34;Hello World!&#34;    .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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa