Problema con ensamblador en Visual Studio 2005

Hola, estoy estudiando para una asignatura el ensamblador de windows. Cuando se trata de ensamblado en línea no hay problema, pero cuando trato hacer un fichero exclusivamente en ensamblador, el vinculador no me reconoce los símbolos y eso que mi profesor nos dijo que el VS2005 reconocía los .asm automáticamente...

Tengo estos dos archivos en un proyecto de consola vacío:

main.c escribió:void main (void)
{
prueba();
}

prueba.asm escribió:.586
.MODEL FLAT
OPTION CASEMAP:NONE

.CODE

_prueba PROC
push ebp
mov ebp, esp
;-------------------------


;-------------------------

mov esp, ebp
pop ebp
ret

_prueba ENDP

END

Y cuando lo compilo...
...
.\main.c(3) : warning C4013: 'prueba' sin definir; se supone que extern devuelve como resultado int
Vinculando...
main.obj : error LNK2019: símbolo externo _prueba sin resolver al que se hace referencia en la función _main
...

A ver si alguien que sepa me puede echar una mano...

Solución:

He estado investigando un poco y hay que especificarle al entorno las herramientas con la que debe compilar los .asm:

Botón derecho del ratón sobre el .asm > Propiedades > Propiedades de configuración > Paso de generación personalizada:
Línea de comandos: ml.exe /Zi /Zd /Cp /c /coff "$(InputPath)"
Descripción: Ensamblando "$(InputPath)"
Resultado: "$(InputName).obj"

Por si alguien fuera a preguntar lo mismo...

SAlu2
hace mucho que no leo lineas de codigo y a lo mejor meto la gamba
pero despues de
.CODE no viene
Start:
y a final del programa
end start
Si no me equivoco, es opcional.
has mirado esto
Me imagino que la advertencia (warning) que emite tu compilador se debe a que en tu programa hay una llamada a la funcion 'funcion' antes de que esta (la funcion 'funcion') sea definida. Si ese es el caso hay dos soluciones:

* Coloca la definicion de 'funcion' antes de cualquier llamada a esta funcion.

-o-

* Añade el prototipo (declaracion) de 'funcion' al inicio del programa:

Código:
#include
/* mas directivas include */

int funcion(char *cadena1, char *cadena2); /* prototipo o declaracion */
/* mas prototipos */

int main(void){

/* cuerpo de main */

}

sacado del rincon del c
Gracias por tu ayuda frankKM [oki], pero ya edite el primer mensaje diciendo que lo solucioné [sonrisa].
4 respuestas