Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 引导加载程序如何读取DVD(cd)?_Assembly_Bootloader_Bios_Dvd - Fatal编程技术网

Assembly 引导加载程序如何读取DVD(cd)?

Assembly 引导加载程序如何读取DVD(cd)?,assembly,bootloader,bios,dvd,Assembly,Bootloader,Bios,Dvd,我有一个用汇编编写的第一阶段引导加载程序。我需要它从dvd(或cd)加载第二阶段引导加载程序。我只找到了从floopy或hdd读取的示例。在那里使用的中断时间为13小时。在中断描述中,它说它可以读取软盘和硬盘。我试着用13h来读一张CD,就好像它是一张软盘,但它不起作用 问题:软盘和dvd之间有什么区别(从访问它们的意义上来说),我可以使用CHS(cilinder,head,sector),扇区大小是多少,我可以使用13h指令正确读取dvd吗。也许有一些例子。我查看了LILO的源代码,发现那里只

我有一个用汇编编写的第一阶段引导加载程序。我需要它从dvd(或cd)加载第二阶段引导加载程序。我只找到了从floopy或hdd读取的示例。在那里使用的中断时间为13小时。在中断描述中,它说它可以读取软盘和硬盘。我试着用13h来读一张CD,就好像它是一张软盘,但它不起作用


问题:软盘和dvd之间有什么区别(从访问它们的意义上来说),我可以使用CHS(cilinder,head,sector),扇区大小是多少,我可以使用13h指令正确读取dvd吗。也许有一些例子。我查看了LILO的源代码,发现那里只有13h,所以它必须工作。谢谢。

LILO不适用于从CD引导,所以我不希望它包含任何用于读取这些内容的代码。试着看看ISOLINUX引导加载程序,它是Linux引导CD上最常用的。引导加载程序从DVD加载-它从软盘或硬盘加载。DVD/CD以模拟模式运行,并在引导过程中公开软盘。

您可以使用mkisofs工具从可引导软盘映像文件制作可引导CD。 以下是我在Windows下的操作方式:

  • 创建一个子目录,
    CdFiles
    ,其中包含可引导软盘映像 文件,
    floppy.img
    (1474560字节长),以及我创建的任何其他文件 我想把它放在CD上
  • mkisofs.exe-b floppy.img-v-r-l-o cd.iso CdFiles
  • 它将创建一个CD ISO映像文件,
    CD.ISO
    ,您可以在CD上刻录并从磁盘引导,也可以在任何PC仿真器中使用并直接从映像引导


    BIOS将模拟CD上的软盘驱动器,内容为
    floppy.img
    ,它将能够使用驱动器号0通过int 13h正常访问自身。为了通过int 13h访问整个CD,您需要创建硬盘映像(可引导),并指定不同的模拟方法(不确定如何使用mkisofs,从未尝试过hdd映像)。同样的情况也会发生,但是现在一个硬盘驱动器将被模拟在CD的顶部,对于int 13h,它将是驱动器号80h。

    我不完全确定(因此没有答案),但我认为引导加载程序不会从DVD加载-它从软盘或硬盘加载。DVD/CD以模拟模式运行,并在引导过程中暴露软盘/光盘。我想“模拟”一词是关键。我很快找到了“El Torito”扩展,它解释了一切。你可以写下来作为答案,我会接受的。谢谢,我只是个懒散有趣的工具。我用的是MagicISO,但我会试试。