我有一个bootloader和一个内核都是用汇编编写的。
现在我对这些文件有两个问题。由于引导加载程序的大小为512B,因此我能够在VirtualBox中成功运行引导加载程序的.img文件。
可是:
我在Windows 7环境中。
答案 0 :(得分:0)
1-)使用MISO制作ISO影像
miso my.iso -ab my.img
(你必须使用copy / b将它们复制到一个img文件中)
2-)我并不完全理解,但我会尽可能地帮助你。 我想你想从内核中调用bootloader中的一些代码部分。 如您所知,您必须知道要调用的代码的内存地址,或者您可以使用.inc文件来调用此部分代码。如果您想让内核能够访问引导加载程序的内存段在运行时,就像我的第一个建议你必须知道你想要称之为代码的内存地址一样:
[Bits 16]
[ORG 0x7c00]
start:
...
times 256-($-$$) db 0
blbla:;I know that is in the [0x7d00]
jmp $
times 256-($-$$) db 0
dw 0xAA55
随时问我问题:afcultraos@gmail.com
答案 1 :(得分:0)
对于第一部分,在内核代码的末尾添加一行 -
...
no_of_sectors equ 8
次512 * no_of_sectors db 0
根据扇区更改数字以固定大小。
第二个 - 您可以使用中断13h将内核加载到内存中
loading_kernel:
mov bx,0x1000; where_to_load_kernel
mov dl,128; DRIVE_NUMBER通常128用于HDD,0用于软盘
mov dh,0; head_no - 从0开始
mov ah,0x02;读取BIOS中的扇区功能
mov al,0x12
mov cx,0x0002;没有阅读的部门
int 13h; BIOS中断 - 仅在实模式下使用
jc loading_kernel;在重试错误的情况下 jmp 0x1000;然后你可以简单地跳转到内核代码