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í:
proc MyFunc1, Param..
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.
Eso se parece más a la sintaxis de fasm que masm.
En masm creo que es asi:
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.
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.
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.