从磁盘/ cd/usb启动

sp3*_*naz 5 c assembly operating-system

如何从磁盘/ cd/usb启动我的小型控制台,具有以下配置:

  1. 我想要使​​用的媒体将是完全原始的,即没有文件系统.
  2. 当我在我的系统中插入媒体或假设它已经插入时,我想让它启动我自己的小操作系统.

我想要使​​用的程序是,当我的系统启动时,它从磁盘/ cd/usb启动,并启动我的操作系统.现在想象一下,操作系统将成为一个hello world程序.我实际上想看看真实世界的操作系统如何实现自己.

Mac*_*ade 3

引导加载程序必须为 512 字节。不多不少。并且它必须以标准 PC 启动签名结尾:0xAA55。

另请注意 PC 以 16 位模式启动。您需要将内核或第二阶段引导加载程序从该代码加载到内存中,然后跳转到该代码(并且可能将 CPU 切换到 32 位保护模式)。

例如(nasm):

BITS 16

; Your assembly code here (510 bytes max)...
jmp $

; Fills the remaining space with 0
times 510 - ( $ - $$ ) db  0

; Boot signature
dw 0xAA55
Run Code Online (Sandbox Code Playgroud)