Hola!
En realidad la manera mas sencilla de combinar assembler con C/C++ es utilizando la directiva asm, como nos muestra el ejemplo de la nota de masklet63 (01/06/2005). El ejemplo descrito es especificamente para compiladores de Borland, las herramientas de MS utilizan de igual manera al GCC las funciones _asm() ó __asm(). Donde se pasa por párametro los opcodes.
El uso de estas directivas de compilador o funciones NO requieren de alguna declaración, incluso asm es una palabra reservada.
Tambien existen otra manera, que es relizar la función en ensamblador utilizando por ejemplo Tasm o Masm y llamarla desde alguna herramienta de alto nivel.
Es decir, algunos prefieren enlazar el archivo externo en asm(.obj) en una aplicación en C, que utilizar Basm.
Algunos prefieren esta forma por que algunas cosas son más flexibles, al uso de diretivas como asm se le llama inline assembler, o conocido en compiladores de Borland como BASM. Se debe decir que codificar asm en BASM es alguna veces distinto a implementar una función para Tasm, por ejemplo.
De todos modos te dejo un ejemplo (Borland) para relizar enlaces entre Asm y C:
/* C CODE */
/* The C code */
extern int ProcName(int, int);
main() {
printf("The Result is = %i", ProcName(parm1,parm2));
}
;ASM CODE
.MODEL Small
.CODE
PUBLIC ProcName
ProcName PROC
push bp
mov bp,sp
mov ax,[bp+4] ; first parameter,
mov dx,[bp+6] ; second parameter
....Aqui lo que quieras
; C usa dx:ax como variables de retorno (RC)
pop bp
ret
ProcName ENDP
END