Du machst mit Nasm aus deinem Asm-File einen Object-File. Diesen Object-File linkst du mit Hilfe von ld mit den restlichen Object-Files zusammen. Also in etwa so:
gcc -c -o kernel.o kernel.c
[...]
nasm -f aout -o asmfile.o asmfile.asm
ld *.o -o os.bin
Natürlich sind die Parameter hier unvollständig, ist ja auch nur ein Beispiel. Außerdem musst du evtl. das aout durch ein elf oder coff oder so ersetzen.
Um in Asm-Files auf C-Funktionen zugreifen zu können musst du irgendwo vor dem Aufruf das hier einfügen:
extern FunktionsName ; unter Win muss meistens ein _ vor den Namen
Um Asm-Funktionen in C-Files aufzurufen musst du im Asm-File das einfügen:
global FunktionsName
Und im C-File den Funktionsprototyp hinzufügen.