Es la segunda opcion que diste, enlazar el archivo generado de ensamblador con el objeto de C. Pero el archivo de ensamblador lo tienes que generar como ELF y no como binario. El binario lo utilizarias unicamente para el bootloader.
Lo siguiente que tendrias que investigar es sobre las interrupciones del procesador y sobre modo real/protegido.
Hay que leer todo lo que puedas sobre las interrupciones (que son, cuando y como se ejecutan, etc.) y deberias conseguir la
Ralf Brown Interrupt List que te va a servir bastante para consultar las distintas funciones de cada interrupcion.
Tambien deberias conseguir los manuales de intel
Software Developer's Manual (que estan en ingles) o AMD. En ellos se explican los distintos modos de los procesadores (ademas de todo lo relacionado con el procesador)