Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eternal Idol

#3251
Es su codigo con lo minimo comentado para que ensamble ... en fin, ahora ya sabra otra manera de enlazar el codigo de la libreria estatica que quiere generar con las herramientas que no quiere usar.
#3252
Si, no lo se, consulta la documentacion de MinGW ... tal vez tambien quieras averiguar sobre otros ensambladores como MASM o NASM.
#3253
ASM / Re: Problema de novato
8 Noviembre 2009, 15:20 PM
De nadas  ::)
#3254
ASM / Re: Problema de novato
8 Noviembre 2009, 14:30 PM
Despues de ensamblar y enlazar ya podes ejecutar tu programa (no hace falta involucrar al compilador gcc):

nasm -f elf test.asm
ld test.o -o test
./test
#3255
Si, de unos y ceros ...

¿Y si usas la g/libc? Tenes disponible la funcion printf por ejemplo, seria mucho mas simple y podrias imprimirlo en hexadecimal ... cuando ya la domines podes incluso depurarla y ver que hace exactamente.
#3256
La direccion 1 seguro que no es valida, mejor intenta con la de tu main, asi sabras el codigo binario de las instrucciones  ::)

PD. No mire el codigo pero depuralo con el gdb en todo caso.
#3257
ASM / Re: Que cosa mas rara
7 Noviembre 2009, 08:51 AM
De nadas  ::)
#3258
Esto es muy especifico de la herramienta que uses, FASM por lo que veo. Yo no puedo ver como hacerlo aca en el manual:

http://flatassembler.net/docs.php?article=manual#2.4

format PE GUI 4.0 LIB fue mi primera intuicion pero no funciona y obviamente no figura ahi.

Agrego, es posible generar archivos objeto COFF y con VC++ entonces generar una libreria estatica, esto es algo muy basico que apenas ensambla, enlaza y funciona pero tendras que hacer mas.

Tu codigo para .obj:
Código (asm) [Seleccionar]
format MS COFF
;entry DllEntryPoint

include 'win32a.inc'
cadena db 'asd',0

section '.text' code ;readable executable


proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
       mov     eax,TRUE
       ret
endp

public MiFuncion
public MiFuncion as '_MiFuncion'


proc MiFuncion
       invoke  MessageBox,HWND_DESKTOP,cadena,cadena,MB_OK
       ret
endp

section '.idata' data ;Mimport data ;readable writeable

 library user,'USER32.DLL'

extrn '__imp__MessageBoxA@16' as MessageBox:dword

;  import user,\
;         MessageBox,'MessageBoxA'

section '.edata' data ;export data readable

;  export 'midll.dll',\
;         MiFuncion,'MiFuncion'


section '.reloc' data; fixups data discardable


fasm faLib.asm generara faLib.obj
lib faLib.obj generara faLib.lib

Un ejemplo para llamar a la libreria (MASM):
Código (asm) [Seleccionar]
.386
.model flat, stdcall

MiFuncion PROTO C:DWORD

.code
main:
call miFuncion
ret
end main


ml call.asm faLib.lib user32.lib
#3259
ASM / Re: Examen de Ensamblador [Ayuda]
6 Noviembre 2009, 17:34 PM
¿Se lo estas pasando al enlazador? Como en este caso:
link calling_asm.obj asm_called.lib kernel32.lib user32.lib

Fijate en las opciones del proyecto, ahi podes ver la linea de comandos del enlazador y las opciones.
#3260
ASM / Re: Que cosa mas rara
6 Noviembre 2009, 17:33 PM
Sino usas funciones existentes en la g/libc entonces tenes que aplicar la misma logica que en cualquier otro lenguaje de programacion. Tomas el numero y usando divisiones y restos averiguas todos sus digitos, a cada uno de ellos le sumas 48 (es decir '0') para transformarlo en un caracter.

Ejemplo simple:

253= 253 / 10 = 25
        253 % 10 = 3 + 48 = 51 = '3'
        25 / 10 = 2
        25 % 10 = 5 + 48 = 53 = '5'
        2 + 48 = 50 = '2'