2016-03-21 5 views
-1

Я создал простой загрузчик с nasm (это работает). Моя вторая программа , также скомпилированная с nasm, должна быть запущена из загрузчика ... но я не знаю, как это сделать .. .есть идеи.. ?Перейти к ядру на dvd

Здесь мой сайт here .. вы, вероятно, видите два textarea, верхнее textarea - это загрузчик .., вторая должна быть второй программой, запущенной из загрузчика (но с которой я не могу заставить ее работать). Затем вы должны нажать кнопку «сделать iso». Затем в php я использую команду: $ op = system ("genisoimage -b prog". $ Getal. ". Img -no-emul-boot -boot-load-size 4 -o prog". $ Getal. " .iso/var/www/html/boot/>> ". $ getal." 2.txt 2> & 1 ", $ back);

Это делает iso-файл, который сжигает первую программу/загрузчик на dvd в bootsector (512) .. это работает ... но теперь, как запустить вторую программу. Любые идеи?

Thx,

Frederik Горшок

+0

Вы можете создать первый этап и второй этап, объединить их вместе, чтобы создать образ диска. У меня есть ответ, который показывает, как это можно сделать в ответе [Stackoverflow] (http://stackoverflow.com/a/34095896/3857942). Этот код показывает, как вы можете загрузить второй сектор, а также перейти к нему. После того, как вы создали образ диска, вы сможете использовать genisoimg (или mkisofs) –

+0

У меня также есть некоторые [общие советы загрузчика] (http://stackoverflow.com/questions/32701854/boot-loader-doesnt-jump-to -kernel-code/32705076 # 32705076) в этом ответе на Stackoverflow –

+0

Thx, за ваше время/быструю реакцию ... но должен сказать: плохо держите это так ... это слишком сложно для меня. – Frederik

ответ

0

Во-первых, я удивлен загрузчика работает на всех, так как он использует стек (push 0a000h) без установки либо СП, ни сс регистров. Таким образом, вы полагаетесь на BIOS, чтобы стек установил где-то, который не винит то, что вы пытаетесь сделать. Стек может даже сидеть на очень низком адресе и перезаписывать IVT или собственный код - вы просто не можете знать.

Для вашего первоначального вопроса: попробуйте посмотреть на int 0x13. Ваш скрипт для создания ISO может склеить ваши два двоичных файла вместе (просто убедитесь, что они соответствующим образом дополнены), а затем из вашего загрузочного кода вы можете использовать именованное прерывание для загрузки вашего нового двоичного кода в память в определенном месте, а затем вы можете далеко jmp там ,