我用nasm(有效)制作了一个简单的bootloader ..我的第二个程序 还应该从bootloader开始用nasm编译......但是我不知道怎么做......任何想法......?
这里是我的网站here ..你可能会看到两个textarea' s,上面的textarea是bootloader ..,第二个应该是从bootloader启动的第二个程序(但我可以&#39 ;让它工作)。 然后你应该推动'制造iso'按钮。 然后在PHP中我使用命令: $ op = system(" genisoimage -b prog"。$ getal。" .img -no-emul-boot -boot-load-size 4 -o prog"。$ getal。& #34; .iso / var / www / html / boot />>"。$ getal。" 2.txt 2>& 1",$ back);
这会产生一个iso文件,它会在bootsector(512)中刻录dvd上的第一个程序/ bootloader ..这个工作..但现在如何运行第二个程序.. 有什么想法吗?
THX,
Frederik Pot
答案 0 :(得分:0)
首先,我很惊讶你的bootloader工作,因为它使用堆栈(push 0a000h
)而不设置sp和ss寄存器。因此,您依靠BIOS来设置某处的堆栈,而这并不会影响您尝试做的事情。堆栈甚至可能位于一个非常低的地址并覆盖IVT或您自己的代码 - 您根本无法知道。
对于您的原始问题:尝试查看int 0x13。您的ISO制作脚本可以将您的两个二进制文件粘合在一起(只需确保它们被适当填充),然后从您的启动代码中,您可以使用命名中断将新二进制文件加载到特定位置的内存中然后您可以远jmp
那里。