Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: The Swash en 3 Junio 2012, 02:29 am



Título: [Consulta] Prototipos de funciones para include.
Publicado por: The Swash en 3 Junio 2012, 02:29 am
Hola,

Hoy vengo a molestaros con una pequeña consulta y es referido a MASM, y es la siguiente:
Yo tengo un número de funciones que hice y quisiera poder hacer un solo archivo que contenga esas funciones para posteriormente incluirlo en mis otros proyectos. Mi duda recae en que mis funciones van así:

Código
  1. proc MyFunc1, Param..
  2.  
  3. end proc

Pero no he logrado que funcione o no al menos con un include MyProcs.asm.
Creo que debo declarar de alguna forma las funciones en cabecera o algo, si alguien sabe agradecería me deis una pequeña manita.

Un saludo,
Iván Portilla.


Título: Re: [Consulta] Prototipos de funciones para include.
Publicado por: _Enko en 3 Junio 2012, 03:32 am
Eso se parece más a la sintaxis de fasm que masm.

En masm creo que es asi:
Código:
myFunc1 PROC Param1: DWORD, Param2: Dword
    ;............
    ret
myFunc1  ENDP

Tambien no se si es importante, pero por ahí conviene meterlo en un archivo ".inc".

Y luego, creo que el include lo deberás hacer en el segmento .code
Saludos.


Título: Re: [Consulta] Prototipos de funciones para include.
Publicado por: Иōҳ en 3 Junio 2012, 05:17 am
En un archivo *.inc declaro los prototipos (si deseas en el principal)

Ejemplo:
xChangeValue PROTO :WORD, :BYTE
TopXY PROTO   :DWORD,:DWORD

Para qué hacer esto?
Para poder usar la directiva invoke, solo de esa manera puedo usar

invoke TopXY dwParam1, dwParam2

En un *.asm aparte del principal puedes hacer esto
.data
[...]
.code
TopXY proc wDim:DWORD, sDim:DWORD

    shr sDim, 1      ; divide screen dimension by 2
    shr wDim, 1      ; divide window dimension by 2
    mov eax, wDim    ; copy window dimension into eax
    sub sDim, eax    ; sub half win dimension from half screen dimension

    return sDim

TopXY endp
 
Luego en un el *.inc principal al final lo puedes incluir:

;#### Inserted modules ####

        include xtra.asm
   include SplashScreen.asm
   include ChanceCell.asm

y listo en el main, lo puedes llamar normalmente sin problemas

Nox.


Título: Re: [Consulta] Prototipos de funciones para include.
Publicado por: The Swash en 3 Junio 2012, 06:20 am
Hola,

@_Enko muchas gracias y tienes razón, la sintaxis que utilicé es correspondiente a FASM. En realidad llevaba mucho sin utilizar MASM y me he confundido de manera enorme.

@Nox muchas gracias todo me ha quedado claro y funcionando.

Un saludo a ambos,
Iván Portilla.