El BIOS inicia la computadora desde el disco duro (o disquete) leyendo el primer sector (512 bytes) de cada dispositivo de arranque y comprobando un conjunto específico de bytes de firma. Si se encuentran esos bytes, el sector de 512 bytes se copia al ram (en una posición específica) y el BIOS salta para ejecutarlo.
Aparte de los bytes de la firma, 446 bytes en el sector están disponibles para su uso como su programa de arranque, ¡pero el programa de arranque debe ajustarse por completo en ese sector! Como 446 bytes no es muy grande, tendrá que realizar llamadas al BIOS para copiar otros sectores del disco duro (o disquete, o lo que sea) en ram para ejecutarlos.
Una vez que haya cargado lo suficiente en ram para ejecutar su programa, salte a él y listo.
Eso es como un sistema operativo, literalmente "se tira por ella es propio esfuerzo"
Ver http://en.wikipedia.org/wiki/Master_boot_record
Ahora, no hay ninguna razón que no podría escribir el código de arranque en C o C++ (o la mayoría cualquier otra cosa) excepto que con el ensamblaje, usted sabe exactamente qué código se generará y es fácil hacer llamadas al BIOS.
Le sugiero que escriba una unidad de disco de 512 bytes para copiar la copiadora que carga su programa desde el disco a ram, y luego salta a la dirección de inicio de su programa. Luego puede escribir su programa en el idioma que desee. Tenga en cuenta que cuando el código de arranque comienza a ejecutarse, esos 512 bytes son lo único que puede contar como en el ram. (Bueno, el BIOS está ahí, puedes hacer llamadas al BIOS. El BIOS también colocará cierta información del sistema en ciertos lugares en ram ...) Si quieres llamar a cualquier función que hayas escrito que esté fuera de ese sector, debes cárgalos en Ram tú mismo.
Además, la manera más fácil de probar su código probablemente será colocarlo en un disquete y arrancarlo.
Para responder a su pregunta original, podría guardar una copia de seguridad del MBR anterior en algún lugar, y su nuevo MBR podría cargar su función en RAM, ejecutarlo, cargar el MBR original y ejecutarlo, permitiendo que Windows continúe arrancando .
Además, Michael Burr tiene razón, hacer lo que quiere hacer va a ser una pesadilla.
En respuesta a su comentario acerca de cómo escribir esto en el disco duro, hay varios programas de "escritura en bruto" que pueden copiar a un sector en el disco. Además, puede arrancar desde un CD live de Linux y usar dd para escribir sus datos en el sector de su elección en el dispositivo de bloques de su elección. - Simple como pie esa parte.
Soy muy consciente de que esto va a ser difícil. Mi PREGUNTA es, ¿cuál es la mejor manera de poner una instrucción en el MBR? No hace falta decir que Windows no permite el acceso directo al disco. ¿Cómo sugeriría que escriba instrucciones en el MBR? –