我对汇编编码非常陌生,并且一直很难用谷歌搜索我需要知道的东西,我只想知道
1)我在哪里以及如何将我的内核放在我的引导程序旁边的软盘文件(.flp)中
2)如何告诉我的bootloader运行内核
我写了所有内容我似乎无法附加文件并告诉我的引导程序运行内核
编辑:我使用nasm制作.bin文件,然后将.bin文件重命名为.flp,然后使用rufus将我的.flp图像加载到带有DD选项的USB闪存盘
答案 0 :(得分:0)
您可能认为Basile的评论有点不屑一顾,但事实是,即使您的问题非常具体,解决方案的组合和排列也不是。首先要知道的是,你的内核期望什么。就我而言,我的启动加载器;
所以在引导扇区编码的最后一件事是
cli ; No more interrupts
lgdt [cs:GDTR] ; Load GDT register
mov eax, cr0
or al, 0x01 ; Set protected mode bit
mov cr0, eax
jmp 8:0x8060
和内核中的第一件事
mov ecx, ss ; Get stack segment
shl ecx, 4
add ebp, ecx ; SS:BP becomes EBP
add esp, ecx ; SS:SP becomes ESP
; Initialize segments to point to data area
mov eax, 16
mov es, ax
mov ds, ax
mov ss, ax
mov fs, ax
mov gs, ax
这个解决方案是根据我的设计标准进行的,我会冒昧地说,你不会找到另外一个像这样做得很好的编码器。最终,我已经像你一样做得很好,创建了一个图像并使用dd if=Proto of=/dev/sdc
将其复制到USB。名为Proto
的文件是Bochs中使用的二进制图像。
要获得任何人的任何有意义的输入,您需要非常具体地了解期望和需求,这一切都始于查看自定义引导加载程序的外观。