В операционных системах очень небольшая часть пишется на асме. Язык Си, например, для того, фактически, и был придуман, чтобы писать Юникс, хотя первая версия Юникса и была написана на ассемблере. Даже до Юникса, ещё в 60х, части операционок писали на высокоуровневых языках (если не ошибаюсь, части Мультикса были написаны на ПЛ/1). В современной операционке на ассемблере стоит писать, пожалуй, разве что переключатель между тредами/процессами — там, где надо сохранять регистры текущего треда и загружать регистры следующего, что навряд ли переносимо и приходится писать заново для каждого типа процессора. Ну может ещё для работы с защищённым режимом, в примитивах синхронизации и обработчиках прерываний.
В Беркли например (один из ведущих американских универов по Computer Science) на курсе по ОС студенты пишут учебную многозадачную операционку вообще на Яве %-) Называется Nachos. А что, для скорого обучения самое то. Хотя бы потому, что баги вместо того, чтобы повесить компьютер, просто выбрасывают из виртуальной машины. Причём, с указанием строчки кода где произошла ошибка. В Стенфорде (другой известный в Computer Science универ в Силиконовой долине) используют Pintos, что есть клон Nachos, но на C, и тоже, как правило, пускается в эмуляции процессора. Популярный и очень доступный университетский учебник по операционкам — это Silberschatz, Galvin and Gagne, "Operating System Concepts", правда я не уверен, что он переведён на русский. Ещё слайды каких-нибудь лекций по ОС можно почитать. Например, тут —
http://www.cs.berkeley.edu/~kubitron/courses/cs162-F05/
Запускание системы с дискетки тоже не принципиально для первой в своей жизни операционки, это лучше делать уже в последнюю очередь. 95-е Винды, помнится, запускались и из командной строки доса. Но если всё же очень хочется, то всё равно это не к компилятору. Тут надо boot sector прописать — первый сектор на диске, где хранится программа, запускаемая при включении/перезагрузке компьютера. Но всё это технические мелочи, которыми, быть может, не стоит особо заморачиваться поначалу. Операционка — это гораздо более глобальная штука, нежели ассемблер или загрузка с дискетки. А то так можно и 3д-стрелялки целиком на асме писать

И ещё, наверное не стоит писать клон ДОСа. Время можно потратить гораздо более продуктивно